135 lines
3.5 KiB
JavaScript
135 lines
3.5 KiB
JavaScript
/**
|
|
* Raw RigidBody API object - should always correspond with the RigidBody Schema
|
|
* @param apiComponent
|
|
* @param mesh
|
|
* @param mass
|
|
* @param friction
|
|
* @param position
|
|
* @param quaternion
|
|
* @param velocity
|
|
* @param angularVelocity
|
|
* @param linearDamping
|
|
* @param angularDamping
|
|
* @param allowSleep
|
|
* @param sleepSpeedLimit
|
|
* @param sleepTimeLimit
|
|
* @param collisionFilterGroup
|
|
* @param collisionFilterMask
|
|
* @param fixedRotation
|
|
* @param shapes
|
|
* @param kinematic
|
|
* @constructor
|
|
*/
|
|
R3.D3.API.RigidBody = function(
|
|
apiComponent,
|
|
mesh,
|
|
mass,
|
|
friction,
|
|
position,
|
|
quaternion,
|
|
velocity,
|
|
angularVelocity,
|
|
linearDamping,
|
|
angularDamping,
|
|
allowSleep,
|
|
sleepSpeedLimit,
|
|
sleepTimeLimit,
|
|
collisionFilterGroup,
|
|
collisionFilterMask,
|
|
fixedRotation,
|
|
shapes,
|
|
kinematic
|
|
) {
|
|
|
|
__API_COMPONENT__;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.mesh)) {
|
|
apiComponent.mesh = 0;
|
|
}
|
|
this.mesh = apiComponent.mesh;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.mass)) {
|
|
apiComponent.mass = 0;
|
|
}
|
|
this.mass = apiComponent.mass;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.friction)) {
|
|
apiComponent.friction = 5;
|
|
}
|
|
this.friction = apiComponent.friction;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.position)) {
|
|
apiComponent.position = new R3.API.Vector3(0,0,0);
|
|
}
|
|
this.position = apiComponent.position;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.quaternion)) {
|
|
apiComponent.quaternion = new R3.API.Quaternion();
|
|
}
|
|
this.quaternion = apiComponent.quaternion;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.velocity)) {
|
|
apiComponent.velocity = new R3.API.Vector3();
|
|
}
|
|
this.velocity = apiComponent.velocity;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.angularVelocity)) {
|
|
apiComponent.angularVelocity = new R3.API.Vector3();
|
|
}
|
|
this.angularVelocity = apiComponent.angularVelocity;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.linearDamping)) {
|
|
apiComponent.linearDamping = 0.01;
|
|
}
|
|
this.linearDamping = apiComponent.linearDamping;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.angularDamping)) {
|
|
apiComponent.angularDamping = 0.01;
|
|
}
|
|
this.angularDamping = apiComponent.angularDamping;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.allowSleep)) {
|
|
apiComponent.allowSleep = true;
|
|
}
|
|
this.allowSleep = apiComponent.allowSleep;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.sleepSpeedLimit)) {
|
|
apiComponent.sleepSpeedLimit = 0.1;
|
|
}
|
|
this.sleepSpeedLimit = apiComponent.sleepSpeedLimit;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.sleepTimeLimit)) {
|
|
apiComponent.sleepTimeLimit = 1.0;
|
|
}
|
|
this.sleepTimeLimit = apiComponent.sleepTimeLimit;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.collisionFilterGroup)) {
|
|
apiComponent.collisionFilterGroup = 1;
|
|
}
|
|
this.collisionFilterGroup = apiComponent.collisionFilterGroup;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.collisionFilterMask)) {
|
|
apiComponent.collisionFilterMask = 1;
|
|
}
|
|
this.collisionFilterMask = apiComponent.collisionFilterMask;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.fixedRotation)) {
|
|
apiComponent.fixedRotation = false;
|
|
}
|
|
this.fixedRotation = apiComponent.fixedRotation;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.shapes)) {
|
|
apiComponent.shapes = [];
|
|
}
|
|
this.shapes = apiComponent.shapes;
|
|
|
|
if (R3.Utils.UndefinedOrNull(apiComponent.kinematic)) {
|
|
apiComponent.kinematic = false;
|
|
}
|
|
this.kinematic = apiComponent.kinematic;
|
|
|
|
};
|
|
|
|
R3.D3.API.RigidBody.prototype = Object.create(R3.API.Component.prototype);
|
|
R3.D3.API.RigidBody.prototype.constructor = R3.D3.API.RigidBody;
|