AnimatLab  2
Test
BlJoint.h
1 // BlJoint.h: interface for the BlJoint class.
2 //
4 
5 #pragma once
6 
7 #include "BlConstraintRelaxation.h"
8 
9 namespace BulletAnimatSim
10 {
11  namespace Environment
12  {
13  class BlRigidBody;
14 
29  class BULLET_PORT BlJoint : public OsgJoint
30  {
31  protected:
32  btTypedConstraint *m_btJoint;
33  btAnimatGeneric6DofConstraint *m_bt6DofJoint;
34  BlSimulator *m_lpVsSim;
35  float m_fltPrevBtJointPos;
36  float m_fltPrevJointPos;
37 
38  BlRigidBody *m_lpBlParent;
39  BlRigidBody *m_lpBlChild;
40 
41  btRigidBody *m_btParent;
42  btRigidBody *m_btChild;
43 
45  BlConstraintRelaxation *m_aryBlRelaxations[6];
46 
47  btVector3 m_vLowerLinear;
48  btVector3 m_vUpperLinear;
49  btVector3 m_vLowerAngular;
50  btVector3 m_vUpperAngular;
51 
52  virtual BlSimulator *GetBlSimulator();
53 
54  virtual void CalculateRelativeJointMatrices(btTransform &mtJointRelToParent, btTransform &mtJointRelToChild);
55  virtual void CalculateRelativeJointMatrices(CStdFPoint vAdditionalRot, btTransform &mtJointRelToParent, btTransform &mtJointRelToChild);
56  virtual void InitBaseJointPointers(RigidBody *lpParent, RigidBody *lpChild, ConstraintRelaxation **aryRelaxations, int iDisallowSpringIndex);
57 
58  virtual float GetCurrentBtPositionScaled();
59 
60  public:
61  BlJoint();
62  virtual ~BlJoint();
63 
64  virtual BlRigidBody *GetBlParent() {return m_lpBlParent;};
65  virtual BlRigidBody *GetBlChild() {return m_lpBlChild;};
66 
67  virtual btRigidBody *GetBtParent() {return m_btParent;};
68  virtual btRigidBody *GetBtChild() {return m_btChild;};
69 
70  virtual void DeletePhysics(bool bIncludeChildren);
71 
72  virtual bool Physics_IsDefined();
73  virtual void Physics_ResetSimulation();
74  virtual void Physics_CollectData();
75  virtual void SetConstraintFriction() {};
76  virtual void AxisConstraintSpringEnableChanged(bool bEnabled) {};
77 
78  virtual float GetCurrentBtPosition() {return 0;};
79 
80  virtual void GetLimitsFromRelaxations(btVector3 &vLowerLinear, btVector3 &UpperLinear, btVector3 &vLowerAngular, btVector3 &vUpperAngular);
81  virtual void SetLimitValues();
82 
83  virtual btTypedConstraint* Constraint() {return m_btJoint;};
84  };
85 
86  } // Environment
87 } //BulletAnimatSim
A common class for all joint data specific to vortex.
Definition: BlJoint.h:29
A common class for all rigid body data specific to vortex.
Definition: BlRigidBody.h:87
Classes for implementing the cm-labs vortex physics engine for AnimatLab.