00001 #ifndef IPSA_SOJOINTHINGE_H
00002 #define IPSA_SOJOINTHINGE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #include "IPSA.h"
00028 #include "SoJoint.h"
00029
00030 #include <Inventor/fields/SoSFVec3f.h>
00031 #include <Inventor/fields/SoSFFloat.h>
00032
00033 class SoPhysics;
00034
00035 class IPSA_IMPORT_EXPORT SoJointHinge : public SoJoint
00036 {
00037 SO_KIT_HEADER(SoJointHinge);
00038
00039 public:
00040
00041 SoJointHinge(const SbString& BodyOne = "", const SbString& BodyTwo = "", const SbString& nodeName = "");
00042
00043 static void initClass();
00044 virtual void setParams();
00045
00046 SoSFFloat getAngle();
00047 SoSFFloat getAngleRate();
00048
00049 virtual void setTorque(dReal torque1 = 0.0f, dReal torque2 = 0.0f, dReal torque3 = 0.0f);
00050
00051 SoSFVec3f soAnchor;
00052 SoSFVec3f soAxis;
00053 SoSFFloat soTorque;
00054
00055 SoSFFloat AngleOffset;
00056 SoSFFloat LoStop;
00057 SoSFFloat HiStop;
00058 SoSFFloat Velocity;
00059 SoSFFloat MaxForce;
00060 SoSFFloat FudgeFactor;
00061 SoSFFloat Bounce;
00062 SoSFFloat CFM;
00063 SoSFFloat StopERP;
00064 SoSFFloat StopCFM;
00065 SoSFFloat SuspensionERP;
00066 SoSFFloat SuspensionCFM;
00067
00068 protected:
00069 virtual void createOdeJoint(const dWorldID soWorldId);
00070 virtual void updateOdeJointProperties(const SbMatrix& modelMatrix);
00071 virtual SoNode* createVisualisation();
00072
00073 float initVelocity;
00074 float initMaxForce;
00075 };
00076
00077 #endif
00078