r3-legacy/src/r3-d3-api-rigidBody.js

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;