render mesh offsets (position & quaternion)

beta.r3js.org
polygonboutique 2016-10-10 10:15:46 +02:00
parent 1b53eb912e
commit e57d470c8c
1 changed files with 32 additions and 3 deletions

View File

@ -2827,8 +2827,10 @@ GameLib.D3.Physics.World.prototype.Step = function(
) {
if(this.engineType == GameLib.D3.Physics.Engine.TYPE_CANNON) {
var now = performance.now() / 1000;
this.worldObject.internalStep(timeStep);
return;
var now = performance.now() / 1000;
if(!this.lastCallTime){
// last call time not saved, cant guess elapsed time. Take a simple step.
this.worldObject.step(timeStep);
@ -3125,8 +3127,35 @@ GameLib.D3.Game.prototype.ProcessPhysics = function (
if(mesh) {
if(physicsWorld.engineType === GameLib.D3.Physics.Engine.TYPE_CANNON) {
mesh.position.copy(body.bodyObject.position);
mesh.quaternion.copy(body.bodyObject.quaternion);
var quaternion = new THREE.Quaternion();
quaternion.copy(body.bodyObject.quaternion);
var quaternionCopy = quaternion.clone();
var position = new THREE.Vector3();
position.copy(body.bodyObject.position);
if(mesh.permutate) {
if(mesh.permutate.offset) {
if(mesh.permutate.offset.quaternion) {
var offsetQuaternion = new THREE.Quaternion();
offsetQuaternion.copy(mesh.permutate.offset.quaternion);
quaternion = quaternion.multiply(offsetQuaternion).normalize();
}
if(mesh.permutate.offset.position) {
var offsetPosition = new THREE.Vector3();
offsetPosition.copy(mesh.permutate.offset.position);
//position = position.add(offsetPosition);
position = position.add(offsetPosition.applyQuaternion(quaternionCopy));
}
}
}
mesh.position.copy(position);
mesh.quaternion.copy(quaternion);
}
}
}