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