/** * 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;