import * as THREE from 'three';


	// Control rack
	export function rc(width=800, height=2500, depth=600) {
		const rc_rackObject = new THREE.Object3D();
	
		const bluematerial = new THREE.MeshLambertMaterial({color: 0x0053d9});
		const softbluematerial = new THREE.MeshLambertMaterial({color: 0x2b7cff});
		const target = new THREE.MeshLambertMaterial({color: 0xfbe928});
		const materialGreyDark= new THREE.MeshLambertMaterial({color: 0x9d9d9d});
		const materialGreyMedium= new THREE.MeshLambertMaterial({color: 0x636363});
		
		//rack
		const rrgeometry = new THREE.BoxGeometry(width, height, depth);
		const rrmesh = new THREE.Mesh(rrgeometry, softbluematerial);
		rrmesh.position.set( 0, 0 , -10);
		rc_rackObject.add(rrmesh);		
		
		//front yellow target
		const Ftarget = new THREE.BoxGeometry(2, 90, 500);
		const Ftargetmesh = new THREE.Mesh(Ftarget, target);
		Ftargetmesh.position.set( -451, 1200 , -15);
		rc_rackObject.add(Ftargetmesh);		
		//Rear yellow target
		const Rtarget = new THREE.BoxGeometry(2, 90, 500);
		const Rtargetmesh = new THREE.Mesh(Rtarget, target);
		Rtargetmesh.position.set( 401, 1200 , -15);
		rc_rackObject.add(Rtargetmesh);				
		
		//edge le	
		const llegeometry = new THREE.BoxGeometry(width-750, height, depth-550);
		const llemesh = new THREE.Mesh(llegeometry, bluematerial);
		llemesh.position.set( -425, 0 , -285);
		rc_rackObject.add(llemesh);
		
		//edge re		
		const lregeometry = new THREE.BoxGeometry(width-750, height, depth-550);
		const lremesh = new THREE.Mesh(lregeometry, bluematerial);
		lremesh.position.set( -425, 0 , 265);
		rc_rackObject.add(lremesh);		

		//edge ue		
		const luegeometry = new THREE.BoxGeometry(width-750, height-2450, depth-50);
		const luemesh = new THREE.Mesh(luegeometry, bluematerial);
		luemesh.position.set( -425, 1225 , -7);
		rc_rackObject.add(luemesh);		

		//edge de		
		const ldegeometry = new THREE.BoxGeometry(width-750, height-2450, depth-50);
		const ldemesh = new THREE.Mesh(ldegeometry, bluematerial);
		ldemesh.position.set( -425, -1230 , -7);
		rc_rackObject.add(ldemesh);				

	
		//borderEC down
		const borderECgeometry = new THREE.BoxGeometry(10, 400, 600);
		const borderECgeometrymesh = new THREE.Mesh(borderECgeometry, materialGreyDark);
		borderECgeometrymesh.position.set( -400, -250 , -10);
		rc_rackObject.add(borderECgeometrymesh);
		
		//EC1 down
		const EC1geometry = new THREE.BoxGeometry(10, 350, 40);
		const EC1geometrymesh = new THREE.Mesh(EC1geometry, materialGreyMedium);
		EC1geometrymesh.position.set( -402, -250 , -200);
		rc_rackObject.add(EC1geometrymesh);			
		//EC2 down
		const EC2geometry = new THREE.BoxGeometry(10, 350, 40);
		const EC2geometrymesh = new THREE.Mesh(EC2geometry, materialGreyMedium);
		EC2geometrymesh.position.set( -402, -250 , -150);
		rc_rackObject.add(EC2geometrymesh);			
		//EC2 down
		const EC3geometry = new THREE.BoxGeometry(10, 350, 40);
		const EC3geometrymesh = new THREE.Mesh(EC3geometry, materialGreyMedium);
		EC3geometrymesh.position.set( -402, -250 , -100);
		rc_rackObject.add(EC3geometrymesh);		
		
		//borderEC up
		const borderupECgeometry = new THREE.BoxGeometry(10, 400, 600);
		const borderupECgeometrymesh = new THREE.Mesh(borderupECgeometry, materialGreyDark);
		borderupECgeometrymesh.position.set( -400, 250 , -10);
		rc_rackObject.add(borderupECgeometrymesh);
		
		//EC1 up
		const EC1geometryup = new THREE.BoxGeometry(10, 350, 40);
		const EC1geometryupmesh = new THREE.Mesh(EC1geometryup, materialGreyMedium);
		EC1geometryupmesh.position.set( -402, 250 , -200);
		rc_rackObject.add(EC1geometryupmesh);			
		//EC2 up
		const EC2geometryup = new THREE.BoxGeometry(10, 350, 40);
		const EC2geometryupmesh = new THREE.Mesh(EC2geometryup, materialGreyMedium);
		EC2geometryupmesh.position.set( -402, 250 , -150);
		rc_rackObject.add(EC2geometryupmesh);			
		//EC2 up
		const EC3geometryup = new THREE.BoxGeometry(10, 350, 40);
		const EC3geometryupmesh = new THREE.Mesh(EC3geometryup, materialGreyMedium);
		EC3geometryupmesh.position.set( -402, 250 , -100);
		rc_rackObject.add(EC3geometryupmesh);				
		
		
		
		return rc_rackObject;
	}