|
@@ -192,33 +192,38 @@
|
|
|
// Floor
|
|
|
|
|
|
const geometry = new THREE.BoxGeometry( 6, 2, 6 );
|
|
|
- const material = new THREE.MeshNormalMaterial();
|
|
|
+ const material = new THREE.MeshNormalMaterial( { visible: false } );
|
|
|
|
|
|
const floor = new THREE.Mesh( geometry, material );
|
|
|
floor.position.y = - 1;
|
|
|
- physics.addMesh( floor );
|
|
|
+ floor.userData.physics = { mass: 0 };
|
|
|
+ scene.add( floor );
|
|
|
|
|
|
// Walls
|
|
|
|
|
|
const wallPX = new THREE.Mesh( geometry, material );
|
|
|
wallPX.position.set( 4, 3, 0 );
|
|
|
wallPX.rotation.z = Math.PI / 2;
|
|
|
- physics.addMesh( wallPX );
|
|
|
+ wallPX.userData.physics = { mass: 0 };
|
|
|
+ scene.add( wallPX );
|
|
|
|
|
|
const wallNX = new THREE.Mesh( geometry, material );
|
|
|
wallNX.position.set( - 4, 3, 0 );
|
|
|
wallNX.rotation.z = Math.PI / 2;
|
|
|
- physics.addMesh( wallNX );
|
|
|
+ wallNX.userData.physics = { mass: 0 };
|
|
|
+ scene.add( wallNX );
|
|
|
|
|
|
const wallPZ = new THREE.Mesh( geometry, material );
|
|
|
wallPZ.position.set( 0, 3, 4 );
|
|
|
wallPZ.rotation.x = Math.PI / 2;
|
|
|
- physics.addMesh( wallPZ );
|
|
|
+ wallPZ.userData.physics = { mass: 0 };
|
|
|
+ scene.add( wallPZ );
|
|
|
|
|
|
const wallNZ = new THREE.Mesh( geometry, material );
|
|
|
wallNZ.position.set( 0, 3, - 4 );
|
|
|
wallNZ.rotation.x = Math.PI / 2;
|
|
|
- physics.addMesh( wallNZ );
|
|
|
+ wallNZ.userData.physics = { mass: 0 };
|
|
|
+ scene.add( wallNZ );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -229,6 +234,7 @@
|
|
|
|
|
|
spheres = new THREE.InstancedMesh( geometry, material, 800 );
|
|
|
spheres.instanceMatrix.setUsage( THREE.DynamicDrawUsage ); // will be updated every frame
|
|
|
+ spheres.userData.physics = { mass: 1, restitution: 1.1 };
|
|
|
scene.add( spheres );
|
|
|
|
|
|
const matrix = new THREE.Matrix4();
|
|
@@ -246,7 +252,7 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
- physics.addMesh( spheres, 1, 1.1 );
|
|
|
+ physics.addScene( scene );
|
|
|
|
|
|
}
|
|
|
|