3d-interface/js/l3d/apps/bouncing-cube/BouncingCube.js

37 lines
992 B
JavaScript
Raw Permalink Normal View History

2015-04-02 12:38:06 +02:00
var BouncingCube = function(size, style) {
2015-07-01 16:31:43 +02:00
L3D.Cube.call(this, size, style);
2015-04-02 12:38:06 +02:00
this.fixedCenter = new THREE.Vector3();
2015-04-02 12:38:06 +02:00
this.center = new THREE.Vector3();
this.speed = new THREE.Vector3(0,0,300);
};
2015-07-01 16:31:43 +02:00
BouncingCube.prototype = Object.create(L3D.Cube.prototype);
2015-04-02 12:38:06 +02:00
BouncingCube.prototype.constructor = BouncingCube;
BouncingCube.prototype.update = function() {
// Compute new center
var speedClone = this.speed.clone();
speedClone.multiply(BouncingCube.DT);
2015-04-02 12:38:06 +02:00
this.speed.add(BouncingCube.G);
2015-04-02 12:38:06 +02:00
if (this.speed.dot(this.speed) > 100) {
this.center.add(speedClone);
2015-04-02 12:38:06 +02:00
}
if (this.center.z < 0) {
this.speed.multiply(BouncingCube.FRICTION);
2015-04-02 12:38:06 +02:00
this.center.z = 0;
}
// Update the mesh
this.mesh.position.set(this.center.x, this.center.y, this.center.z);
};
// Static variables
BouncingCube.DT = new THREE.Vector3(0.1,0.1,0.1);
BouncingCube.FRICTION = new THREE.Vector3(1, 1, -0.5);
BouncingCube.G = new THREE.Vector3(0,0,-10);