161 lines
3.6 KiB
JavaScript
161 lines
3.6 KiB
JavaScript
/**
|
|
* Bone Superset
|
|
* @constructor
|
|
* @param graphics GameLib.D3.Graphics
|
|
* @param apiBone GameLib.D3.API.Bone
|
|
*/
|
|
GameLib.D3.Bone = function (
|
|
graphics,
|
|
apiBone
|
|
) {
|
|
this.graphics = graphics;
|
|
this.graphics.isNotThreeThrow();
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(apiBone)) {
|
|
apiBone = {};
|
|
}
|
|
|
|
if (apiBone instanceof GameLib.D3.Bone) {
|
|
return apiBone;
|
|
}
|
|
|
|
GameLib.D3.API.Bone.call(
|
|
this,
|
|
apiBone.id,
|
|
apiBone.name,
|
|
apiBone.childBoneIds,
|
|
apiBone.parentBoneIds,
|
|
apiBone.position,
|
|
apiBone.quaternion,
|
|
apiBone.scale,
|
|
apiBone.up
|
|
);
|
|
|
|
this.position = new GameLib.Vector3(
|
|
graphics,
|
|
this.position,
|
|
this
|
|
);
|
|
|
|
this.quaternion = new GameLib.Quaternion(
|
|
graphics,
|
|
this.quaternion,
|
|
this
|
|
);
|
|
|
|
this.scale = new GameLib.Vector3(
|
|
graphics,
|
|
this.scale,
|
|
this
|
|
);
|
|
|
|
this.up = new GameLib.Vector3(
|
|
graphics,
|
|
this.up,
|
|
this
|
|
);
|
|
|
|
GameLib.Component.call(
|
|
this,
|
|
GameLib.Component.COMPONENT_BONE
|
|
);
|
|
};
|
|
|
|
GameLib.D3.Bone.prototype = Object.create(GameLib.D3.API.Bone.prototype);
|
|
GameLib.D3.Bone.prototype.constructor = GameLib.D3.Bone;
|
|
|
|
|
|
/**
|
|
* Creates an instance bone
|
|
|
|
*/
|
|
GameLib.D3.Bone.prototype.createInstance = function() {
|
|
|
|
this.instance = new THREE.Bone();
|
|
|
|
this.instance.name = this.name;
|
|
|
|
this.instance.position.x = this.position.x;
|
|
this.instance.position.y = this.position.y;
|
|
this.instance.position.z = this.position.z;
|
|
|
|
this.instance.quaternion.x = this.quaternion.x;
|
|
this.instance.quaternion.y = this.quaternion.y;
|
|
this.instance.quaternion.z = this.quaternion.z;
|
|
this.instance.quaternion.w = this.quaternion.w;
|
|
|
|
this.instance.scale.x = this.scale.x;
|
|
this.instance.scale.y = this.scale.y;
|
|
this.instance.scale.z = this.scale.z;
|
|
|
|
this.instance.up.x = this.up.x;
|
|
this.instance.up.y = this.up.y;
|
|
this.instance.up.z = this.up.z;
|
|
|
|
GameLib.Component.prototype.createInstance.call(this);
|
|
};
|
|
|
|
/**
|
|
* Updates the instance
|
|
*/
|
|
GameLib.D3.Bone.prototype.updateInstance = function() {
|
|
this.instance.name = this.name;
|
|
|
|
this.instance.position.x = this.position.x;
|
|
this.instance.position.y = this.position.y;
|
|
this.instance.position.z = this.position.z;
|
|
|
|
this.instance.quaternion.x = this.quaternion.x;
|
|
this.instance.quaternion.y = this.quaternion.y;
|
|
this.instance.quaternion.z = this.quaternion.z;
|
|
this.instance.quaternion.w = this.quaternion.w;
|
|
|
|
this.instance.scale.x = this.scale.x;
|
|
this.instance.scale.y = this.scale.y;
|
|
this.instance.scale.z = this.scale.z;
|
|
|
|
this.instance.up.x = this.up.x;
|
|
this.instance.up.y = this.up.y;
|
|
this.instance.up.z = this.up.z;
|
|
};
|
|
|
|
/**
|
|
* Converts a GameLib.D3.Bone to GameLib.D3.API.Bone
|
|
* @returns {GameLib.D3.API.Bone}
|
|
*/
|
|
GameLib.D3.Bone.prototype.toApiObject = function() {
|
|
|
|
var apiBone = new GameLib.D3.API.Bone(
|
|
this.id,
|
|
this.name,
|
|
this.childBoneIds,
|
|
this.parentBoneIds,
|
|
this.position.toApiObject(),
|
|
this.quaternion.toApiObject(),
|
|
this.scale.toApiObject(),
|
|
this.up.toApiObject()
|
|
);
|
|
|
|
return apiBone;
|
|
};
|
|
|
|
/**
|
|
* Returns a GameLib.D3.Bone from a bone Object
|
|
* @param graphics GameLib.D3.Graphics
|
|
* @param objectBone Object
|
|
* @returns {GameLib.D3.Bone}
|
|
* @constructor
|
|
*/
|
|
GameLib.D3.Bone.FromObject = function(
|
|
graphics,
|
|
objectBone
|
|
) {
|
|
var apiBone = GameLib.D3.API.Bone.FromObject(objectBone);
|
|
|
|
var bone = GameLib.D3.Bone(
|
|
graphics,
|
|
apiBone
|
|
);
|
|
|
|
return bone;
|
|
}; |