00001 #ifndef IPSA_SOJOINTHINGE2_H
00002 #define IPSA_SOJOINTHINGE2_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/SoSFVec2f.h>
00032 #include <Inventor/fields/SoMFFloat.h>
00033
00034 class IPSA_IMPORT_EXPORT SoJointHinge2 : public SoJoint
00035 {
00036 SO_KIT_HEADER(SoJointHinge2);
00037
00038 public:
00039
00040 SoJointHinge2(const SbString& BodyOne = "", const SbString& BodyTwo = "", const SbString& nodeName = "");
00041
00042 static void initClass();
00043 virtual void setParams();
00044
00045 SoSFFloat getAngle();
00046 SoSFFloat getAngleRate();
00047
00048 virtual void setTorque(dReal torque1 = 0.0f, dReal torque2 = 0.0f, dReal torque3 = 0.0f);
00049
00050 SoSFVec3f soAnchor;
00051 SoSFVec3f soAxis1;
00052 SoSFVec3f soAxis2;
00053 SoSFVec2f soTorque;
00054
00055 SoSFFloat LoStop;
00056 SoSFFloat HiStop;
00057 SoSFFloat Velocity;
00058 SoSFFloat MaxForce;
00059 SoSFFloat FudgeFactor;
00060 SoSFFloat Bounce;
00061 SoSFFloat CFM;
00062 SoSFFloat StopERP;
00063 SoSFFloat StopCFM;
00064 SoSFFloat SuspensionERP;
00065 SoSFFloat SuspensionCFM;
00066
00067 SoSFFloat LoStop2;
00068 SoSFFloat HiStop2;
00069 SoSFFloat Velocity2;
00070 SoSFFloat MaxForce2;
00071 SoSFFloat FudgeFactor2;
00072 SoSFFloat Bounce2;
00073 SoSFFloat CFM2;
00074 SoSFFloat StopERP2;
00075 SoSFFloat StopCFM2;
00076 SoSFFloat SuspensionERP2;
00077 SoSFFloat SuspensionCFM2;
00078
00079 protected:
00080 virtual void createOdeJoint(const dWorldID soWorldId);
00081 virtual void updateOdeJointProperties(const SbMatrix& modelMatrix);
00082 virtual SoNode* createVisualisation();
00083
00084 float initVelocity[2];
00085 float initMaxForce[2];
00086 };
00087
00088 #endif