import * as THREE from 'three'; // rack donatello export function donatello(param) { const don_rackObject = new THREE.Object3D(); const materialGreyDark= new THREE.MeshLambertMaterial({color: 0x9d9d9d}); const materialGreyMedium= new THREE.MeshLambertMaterial({color: 0x636363}); const materialVeryGreyDark= new THREE.MeshLambertMaterial({color: 0x242424}); const silvermaterial = new THREE.MeshLambertMaterial({color: 0xf0f0f0}); const greenmaterial = new THREE.MeshLambertMaterial({color: 0x17fc03}); const greenmaterial2 = new THREE.MeshLambertMaterial({color: 0x0f993b}); const emergencymaterial = new THREE.MeshLambertMaterial({color: 0xff0000}); const redmaterial = new THREE.MeshLambertMaterial({color: 0xff0000}); const yellowmaterial = new THREE.MeshLambertMaterial({color: 0xcc9d02}); const materialBrown= new THREE.MeshLambertMaterial({color: 0x654321}); // rack const lrgeometry = new THREE.BoxGeometry(800, 2000, 800); const lrmesh = new THREE.Mesh(lrgeometry, silvermaterial); lrmesh.position.set(0 , 0 , 0); don_rackObject.add(lrmesh); //edge le const rlegeometry = new THREE.BoxGeometry(50, 2000, 50); const rlemesh = new THREE.Mesh(rlegeometry, materialBrown); rlemesh.position.set( -425, 0 , -370); don_rackObject.add(rlemesh); //edge re const rregeometry = new THREE.BoxGeometry(50, 2000, 50); const rremesh = new THREE.Mesh(rregeometry, materialBrown); rremesh.position.set( -425, 0 , 375); don_rackObject.add(rremesh); //edge ue const ruegeometry = new THREE.BoxGeometry(50, -50, 750); const ruemesh = new THREE.Mesh(ruegeometry, materialBrown); ruemesh.position.set( -426, 975 , 0); don_rackObject.add(ruemesh); //edge de const rdegeometry = new THREE.BoxGeometry(50, -50, 750); const rdemesh = new THREE.Mesh(rdegeometry, materialBrown); rdemesh.position.set( -426, -975 , 0); don_rackObject.add(rdemesh); //GreenButton const greenbutton = new THREE.CylinderGeometry(55, 55, 40, 15); const greenbuttonmesh = new THREE.Mesh(greenbutton, greenmaterial); greenbuttonmesh.rotateX(Math.PI * 0.5); greenbuttonmesh.rotateY(Math.PI * 1); greenbuttonmesh.rotateZ(Math.PI * 0.5); greenbuttonmesh.position.set(-400, 700 , 70); don_rackObject.add(greenbuttonmesh); //GreenLed const greenled = new THREE.CylinderGeometry(40, 40, 40, 15); const greenledmesh = new THREE.Mesh(greenled, greenmaterial2); greenledmesh.rotateX(Math.PI * 0.5); greenledmesh.rotateY(Math.PI * 1); greenledmesh.rotateZ(Math.PI * 0.5); greenledmesh.position.set(-400, 700 , 200); don_rackObject.add(greenledmesh); //RedButton const redbutton = new THREE.CylinderGeometry(55, 55, 40, 15); const redbuttonmesh = new THREE.Mesh(redbutton, redmaterial); redbuttonmesh.rotateX(Math.PI * 0.5); redbuttonmesh.rotateY(Math.PI * 1); redbuttonmesh.rotateZ(Math.PI * 0.5); redbuttonmesh.position.set(-400, 550 , 70); don_rackObject.add(redbuttonmesh); //YelloyLed const yellowled = new THREE.CylinderGeometry(40, 40, 40, 15); const yellowledmesh = new THREE.Mesh(yellowled, yellowmaterial); yellowledmesh.rotateX(Math.PI * 0.5); yellowledmesh.rotateY(Math.PI * 1); yellowledmesh.rotateZ(Math.PI * 0.5); yellowledmesh.position.set(-400, 550 , 200); don_rackObject.add(yellowledmesh); //EmergenctButton const emergencybutton = new THREE.CylinderGeometry(80, 80, 40, 15); const emergencybuttonmesh = new THREE.Mesh(emergencybutton, emergencymaterial); emergencybuttonmesh.rotateX(Math.PI * 0.5); emergencybuttonmesh.rotateY(Math.PI * 1); emergencybuttonmesh.rotateZ(Math.PI * 0.5); emergencybuttonmesh.position.set(-400, 330 , 150); don_rackObject.add(emergencybuttonmesh); //display up const displayupgeometry = new THREE.BoxGeometry(50, 50, 150); const displayupgeometrymesh = new THREE.Mesh(displayupgeometry, materialVeryGreyDark); displayupgeometrymesh.position.set( -400, 700 , -150); don_rackObject.add(displayupgeometrymesh); //display2 down const displayupgeometry2 = new THREE.BoxGeometry(50, 50, 150); const displayupgeometrymesh2 = new THREE.Mesh(displayupgeometry2, materialVeryGreyDark); displayupgeometrymesh2.position.set( -400, 600 , -150); don_rackObject.add(displayupgeometrymesh2); //fan1 const fan1geometry = new THREE.BoxGeometry(10, 200, 200); const fan1geometrymesh = new THREE.Mesh(fan1geometry, materialVeryGreyDark); fan1geometrymesh.position.set( -400, 50 , 150); don_rackObject.add(fan1geometrymesh); //fan2 const fan2geometry = new THREE.BoxGeometry(10, 200, 200); const fan2geometrymesh = new THREE.Mesh(fan2geometry, materialVeryGreyDark); fan2geometrymesh.position.set( -400, -170 , 150); don_rackObject.add(fan2geometrymesh); //Lgrid2 down const grid2geometry = new THREE.BoxGeometry(10, 200, 520); const textureLoader2 = new THREE.TextureLoader(); const texture2 = textureLoader2.load('./components/grid_texture.png'); texture2.wrapS = texture2.wrapT = THREE.RepeatWrapping; texture2.repeat.set(50, 1); const material2 = new THREE.MeshBasicMaterial({ map: texture2 }); const grid2geometrymesh = new THREE.Mesh(grid2geometry, material2); grid2geometrymesh.rotateX(Math.PI * 1); grid2geometrymesh.rotateY(Math.PI * 1); grid2geometrymesh.rotateZ(Math.PI * 1); grid2geometrymesh.position.set( -400, -650 , -10); don_rackObject.add(grid2geometrymesh); return don_rackObject; }