topical media & game development

talk show tell print

#javascript-physics-js-box2d-dynamics-joints-b2Joint.js / js



  /*
  * Copyright (c) 2006-2007 Erin Catto 
* This software is provided 'as-is', without any express or implied
* warranty.  In no event will the authors be held liable for any damages
* arising from the use of this software.
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked, and must not be
* misrepresented the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/

var b2Joint = Class.create();
b2Joint.prototype = 
{
        GetType: function(){
                return this.m_type;
        },

        GetAnchor1: function(){return null},
        GetAnchor2: function(){return null},

        GetReactionForce: function(invTimeStep){return null},
        GetReactionTorque: function(invTimeStep){return 0.0},

        GetBody1: function()
        {
                return this.m_body1;
        },

        GetBody2: function()
        {
                return this.m_body2;
        },

        GetNext: function(){
                return this.m_next;
        },

        GetUserData: function(){
                return this.m_userData;
        },

        //--------------- Internals Below -------------------

        initialize: function(def){
                // initialize instance variables for references
                this.m_node1 = new b2JointNode();
                this.m_node2 = new b2JointNode();
                //

                this.m_type = def.type;
                this.m_prev = null;
                this.m_next = null;
                this.m_body1 = def.body1;
                this.m_body2 = def.body2;
                this.m_collideConnected = def.collideConnected;
                this.m_islandFlag = false;
                this.m_userData = def.userData;
        },
        //virtual ~b2Joint() {}

        PrepareVelocitySolver: function(){},
        SolveVelocityConstraints: function(step){},

        // This returns true if the position errors are within tolerance.
        PreparePositionSolver: function(){},
        SolvePositionConstraints: function(){return false},

        m_type: 0,
        m_prev: null,
        m_next: null,
        m_node1: new b2JointNode(),
        m_node2: new b2JointNode(),
        m_body1: null,
        m_body2: null,

        m_islandFlag: null,
        m_collideConnected: null,

        m_userData: null

        // ENUMS

        // enum b2JointType

        // enum b2LimitState

};
b2Joint.Create = function(def, allocator){
                var joint = null;

                switch (def.type)
                {
                case b2Joint.e_distanceJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2DistanceJoint));
                                joint = new b2DistanceJoint(def);
                        }
                        break;

                case b2Joint.e_mouseJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2MouseJoint));
                                joint = new b2MouseJoint(def);
                        }
                        break;

                case b2Joint.e_prismaticJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2PrismaticJoint));
                                joint = new b2PrismaticJoint(def);
                        }
                        break;

                case b2Joint.e_revoluteJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2RevoluteJoint));
                                joint = new b2RevoluteJoint(def);
                        }
                        break;

                case b2Joint.e_pulleyJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2PulleyJoint));
                                joint = new b2PulleyJoint(def);
                        }
                        break;

                case b2Joint.e_gearJoint:
                        {
                                //void* mem = allocator->Allocate(sizeof(b2GearJoint));
                                joint = new b2GearJoint(def);
                        }
                        break;

                default:
                        //b2Settings.b2Assert(false);
                        break;
                }

                return joint;
        };
b2Joint.Destroy = function(joint, allocator){
                /*joint->~b2Joint();
                switch (joint.m_type)
                {
                case b2Joint.e_distanceJoint:
                        allocator->Free(joint, sizeof(b2DistanceJoint));
                        break;

                case b2Joint.e_mouseJoint:
                        allocator->Free(joint, sizeof(b2MouseJoint));
                        break;

                case b2Joint.e_prismaticJoint:
                        allocator->Free(joint, sizeof(b2PrismaticJoint));
                        break;

                case b2Joint.e_revoluteJoint:
                        allocator->Free(joint, sizeof(b2RevoluteJoint));
                        break;

                case b2Joint.e_pulleyJoint:
                        allocator->Free(joint, sizeof(b2PulleyJoint));
                        break;

                case b2Joint.e_gearJoint:
                        allocator->Free(joint, sizeof(b2GearJoint));
                        break;

                default:
                        b2Assert(false);
                        break;
                }*/
        };
b2Joint.e_unknownJoint = 0;
b2Joint.e_revoluteJoint = 1;
b2Joint.e_prismaticJoint = 2;
b2Joint.e_distanceJoint = 3;
b2Joint.e_pulleyJoint = 4;
b2Joint.e_mouseJoint = 5;
b2Joint.e_gearJoint = 6;
b2Joint.e_inactiveLimit = 0;
b2Joint.e_atLowerLimit = 1;
b2Joint.e_atUpperLimit = 2;
b2Joint.e_equalLimits = 3;



  *
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * arising from the use of this software.
  * Permission is granted to anyone to use this software for any purpose,
  * including commercial applications, and to alter it and redistribute it
  * freely, subject to the following restrictions:
  * 1. The origin of this software must not be misrepresented; you must not
  * claim that you wrote the original software. If you use this software
  * in a product, an acknowledgment in the product documentation would be
  * appreciated but is not required.
  * 2. Altered source versions must be plainly marked, and must not be
  * misrepresented the original software.
  * 3. This notice may not be removed or altered from any source distribution.
  */
  
  var b2Joint = Class.create();
  b2Joint.prototype = 
  {
          GetType: function(){
                  return this.m_type;
          },
  
          GetAnchor1: function(){return null},
          GetAnchor2: function(){return null},
  
          GetReactionForce: function(invTimeStep){return null},
          GetReactionTorque: function(invTimeStep){return 0.0},
  
          GetBody1: function()
          {
                  return this.m_body1;
          },
  
          GetBody2: function()
          {
                  return this.m_body2;
          },
  
          GetNext: function(){
                  return this.m_next;
          },
  
          GetUserData: function(){
                  return this.m_userData;
          },
  
          //--------------- Internals Below -------------------
  
          initialize: function(def){
                  // initialize instance variables for references
                  this.m_node1 = new b2JointNode();
                  this.m_node2 = new b2JointNode();
                  //
  
                  this.m_type = def.type;
                  this.m_prev = null;
                  this.m_next = null;
                  this.m_body1 = def.body1;
                  this.m_body2 = def.body2;
                  this.m_collideConnected = def.collideConnected;
                  this.m_islandFlag = false;
                  this.m_userData = def.userData;
          },
          //virtual ~b2Joint() {}
  
          PrepareVelocitySolver: function(){},
          SolveVelocityConstraints: function(step){},
  
          // This returns true if the position errors are within tolerance.
          PreparePositionSolver: function(){},
          SolvePositionConstraints: function(){return false},
  
          m_type: 0,
          m_prev: null,
          m_next: null,
          m_node1: new b2JointNode(),
          m_node2: new b2JointNode(),
          m_body1: null,
          m_body2: null,
  
          m_islandFlag: null,
          m_collideConnected: null,
  
          m_userData: null
  
          // ENUMS
  
          // enum b2JointType
  
          // enum b2LimitState
  
  };
  b2Joint.Create = function(def, allocator){
                  var joint = null;
  
                  switch (def.type)
                  {
                  case b2Joint.e_distanceJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2DistanceJoint));
                                  joint = new b2DistanceJoint(def);
                          }
                          break;
  
                  case b2Joint.e_mouseJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2MouseJoint));
                                  joint = new b2MouseJoint(def);
                          }
                          break;
  
                  case b2Joint.e_prismaticJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2PrismaticJoint));
                                  joint = new b2PrismaticJoint(def);
                          }
                          break;
  
                  case b2Joint.e_revoluteJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2RevoluteJoint));
                                  joint = new b2RevoluteJoint(def);
                          }
                          break;
  
                  case b2Joint.e_pulleyJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2PulleyJoint));
                                  joint = new b2PulleyJoint(def);
                          }
                          break;
  
                  case b2Joint.e_gearJoint:
                          {
                                  //void* mem = allocator->Allocate(sizeof(b2GearJoint));
                                  joint = new b2GearJoint(def);
                          }
                          break;
  
                  default:
                          //b2Settings.b2Assert(false);
                          break;
                  }
  
                  return joint;
          };
  b2Joint.Destroy = function(joint, allocator){
                  /*joint->~b2Joint();
                  switch (joint.m_type)
                  {
                  case b2Joint.e_distanceJoint:
                          allocator->Free(joint, sizeof(b2DistanceJoint));
                          break;
  
                  case b2Joint.e_mouseJoint:
                          allocator->Free(joint, sizeof(b2MouseJoint));
                          break;
  
                  case b2Joint.e_prismaticJoint:
                          allocator->Free(joint, sizeof(b2PrismaticJoint));
                          break;
  
                  case b2Joint.e_revoluteJoint:
                          allocator->Free(joint, sizeof(b2RevoluteJoint));
                          break;
  
                  case b2Joint.e_pulleyJoint:
                          allocator->Free(joint, sizeof(b2PulleyJoint));
                          break;
  
                  case b2Joint.e_gearJoint:
                          allocator->Free(joint, sizeof(b2GearJoint));
                          break;
  
                  default:
                          b2Assert(false);
                          break;
                  }*/
          };
  b2Joint.e_unknownJoint = 0;
  b2Joint.e_revoluteJoint = 1;
  b2Joint.e_prismaticJoint = 2;
  b2Joint.e_distanceJoint = 3;
  b2Joint.e_pulleyJoint = 4;
  b2Joint.e_mouseJoint = 5;
  b2Joint.e_gearJoint = 6;
  b2Joint.e_inactiveLimit = 0;
  b2Joint.e_atLowerLimit = 1;
  b2Joint.e_atUpperLimit = 2;
  b2Joint.e_equalLimits = 3;
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.