runtime vectors

beta.r3js.org
Theunis J. Botha 2016-11-24 19:18:00 +01:00
parent 87d327cb4a
commit 296d7ca836
3 changed files with 66 additions and 4 deletions

View File

@ -419,10 +419,10 @@ GameLib.D3.Mesh.prototype.createInstance = function(update) {
instance.scale.y = this.scale.y;
instance.scale.z = this.scale.z;
instance.quaternion.x = this.quaternion.x;
instance.quaternion.y = this.quaternion.y;
instance.quaternion.z = this.quaternion.z;
instance.quaternion.w = this.quaternion.w;
// instance.quaternion.x = this.quaternion.x;
// instance.quaternion.y = this.quaternion.y;
// instance.quaternion.z = this.quaternion.z;
// instance.quaternion.w = this.quaternion.w;
return instance;
};

View File

@ -500,6 +500,24 @@ GameLib.D3.Scene.LoadScene = function(
)
);
gameLibMesh.position = new GameLib.D3.Vector3.Runtime(
graphics,
gameLibMesh,
gameLibMesh.position
);
gameLibMesh.rotation = new GameLib.D3.Vector3.Runtime(
graphics,
gameLibMesh,
gameLibMesh.rotation
);
gameLibMesh.scale = new GameLib.D3.Vector3.Runtime(
graphics,
gameLibMesh,
gameLibMesh.scale
);
gameLibMeshes.push(gameLibMesh);
}

View File

@ -4,6 +4,50 @@ GameLib.D3.Vector3 = function Vector3(x, y, z) {
this.z = z || 0;
};
/**
* Runtime vector for updating instance objects
* @param graphics GameLib.D3.Graphics
* @param parentObject GameLib.D3.*
* @param apiVector GameLib.D3.Vector3
* @constructor
*/
GameLib.D3.Vector3.Runtime = function RuntimeVector3(graphics, parentObject, apiVector) {
for (var property in apiVector) {
if (apiVector.hasOwnProperty(property)) {
this[property] = apiVector[property];
}
}
this.apiVector = apiVector;
this.graphics = graphics;
this.graphics.isNotThreeThrow();
this.parentObject = parentObject;
this.instance = this.createInstance();
};
GameLib.D3.Vector3.Runtime.prototype.createInstance = function() {
return this.graphics.instance.Vector3(this.x, this.y, this.z);
};
GameLib.D3.Vector3.Runtime.prototype.updateInstance = function() {
if (this.parentObject.updateInstance) {
this.parentObject.updateInstance();
}
this.apiVector.x = this.x;
this.apiVector.y = this.y;
this.apiVector.z = this.z;
};
GameLib.D3.Vector3.prototype.subtract = function (v) {
return new GameLib.D3.Vector3(
this.x - v.x,