File:addBox2D\Dynamics\Joints\b2PrismaticJointDef.js
//################################################################################################//
//################################################################################################//
// //
//██████ ██ ██ ██ ██ ██ ██ █████ ████//
//██ ██ ██ ██ ██ ██ ██ ██ //
//██ ██ ████ ██ █████ ████████ █████ █████ ██ █████ ██ █████ ██ █████ █████ ██ ██ █████ ██ //
//██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████//
//██ ██ ██ █████ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ ██ //
//██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
//██ ██ ██ █████ ██ ██ ██ █████ ████ ██ █████ █████ █████ ██ ██ ██ ████ █████ █████ ██ //
// //
//################################################################################################//
//################################################################################################//
// CLASS CONSTRUCTOR
/**
* Prismatic joint definition. This requires defining a line of
* motion using an axis and an anchor point. The definition uses
* local anchor points and a local axis so that the initial
* configuration can violate the constraint slightly. The joint
* translation is zero when the local anchor points coincide in
* world space. Using local anchors and a local axis helps when
* saving and loading a game.
*
* @class b2PrismaticJointDef
* @constructor
* @extends {b2JointDef}
* @module Joints
*/
function b2PrismaticJointDef() {
/**
* Invokes parent class constructor function reference.
*/
this.constructor( b2Joint.e_prismaticJoint );
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██████ ██ ██ //
// ██ ██ ██ //
// ██ ██ ████ █████ █████ █████ ████ █████ ██ █████ █████ //
// ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ █████ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ █████ █████ ██ ████ ██ █████ █████ //
// ██ //
// ██ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
// property DECLARATIONS
/**
* The local anchor point relative to bodyA's origin.
*
* @public
* @property localAnchorA
* @type {b2Vec2}
*/
this.localAnchorA = new b2Vec2;
/**
* The local anchor point relative to bodyB's origin.
*
* @public
* @property localAnchorB
* @type {b2Vec2}
*/
this.localAnchorB = new b2Vec2;
/**
* The local translation unit axis in bodyA.
*
* @public
* @property localAxisA
* @type {b2Vec2}
*/
this.localAxisA = new b2Vec2;
// property INITIALISATIONS
this.localAxisA.set( 1.0, 0.0 );
/**
*
* @public
* @property type
* @type {int}
*/
// @this.constructor( b2Joint.e_prismaticJoint ) above.
/**
* The constrained angle between the bodies: bodyB_angle -
* bodyA_angle.
*
* @public
* @property referenceAngle
* @type {float}
* @default 0.0
*/
this.referenceAngle = 0.0;
/**
* Enable/disable the joint limit.
*
* @public
* @property enableLimit
* @type {boolean}
* @default false
*/
this.enableLimit = false;
/**
* The lower translation limit, usually in meters.
*
* @public
* @property lowerTranslation
* @type {float}
* @default 0.0
*/
this.lowerTranslation = 0.0;
/**
* The upper translation limit, usually in meters.
*
* @public
* @property upperTranslation
* @type {float}
* @default 0.0
*/
this.upperTranslation = 0.0;
/**
* Enable/disable the joint motor.
*
* @public
* @property enableMotor
* @type {boolean}
* @default false
*/
this.enableMotor = false;
/**
* The maximum motor torque, usually in N-m.
*
* @public
* @property maxMotorForce
* @type {float}
* @default 0.0
*/
this.maxMotorForce = 0.0;
/**
* The desired motor speed in radians per second.
*
* @public
* @property motorSpeed
* @type {float}
* @default 0.0
*/
this.motorSpeed = 0.0;
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██ ██ ██ ██ //
// ██ ██ ██ //
// ██ █████ █████ █████ ████ ██ █████ █████ █████ █████ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ █████ ██ ██ ██ █████ ██ ██ ██ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ █████ ██ ██ ████ █████ ██ ██ █████ █████ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
} b2PrismaticJointDef.prototype = p = new b2JointDef; Box2D.b2PrismaticJointDef = b2PrismaticJointDef;
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██ ██ ██ ██ ██ //
// ███ ███ ██ ██ ██ //
// ███████ █████ █████ █████ █████ █████ █████ //
// ██ █ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ ████ ██ ██ █████ █████ █████ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
// INSTANCE METHODS
/**
* @public
* @method initialize
* @param {b2Body} bodyA
* @param {b2Body} bodyB
* @param {b2Vec2} anchor
* @param {b2Vec2} axis
* @return {void}
*/
p.initialize = function ( bodyA, bodyB, anchor, axis ) {
this.bodyA = bodyA;
this.bodyB = bodyB;
this.bodyA.getLocalPoint( anchor, this.localAnchorA );
this.bodyB.getLocalPoint( anchor, this.localAnchorB );
this.bodyA.getLocalVector( axis, this.localAxisA );
this.referenceAngle = this.bodyB.getAngle() - this.bodyA.getAngle();
};