00001 #ifndef IPSA_SOJOINT_A_MOTOR_H
00002 #define IPSA_SOJOINT_A_MOTOR_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/SoMFVec3f.h>
00031 #include <Inventor/fields/SoSFVec3f.h>
00032 #include <Inventor/fields/SoMFFloat.h>
00033 #include <Inventor/fields/SoSFInt32.h>
00034 #include <Inventor/fields/SoMFInt32.h>
00035
00036 class IPSA_IMPORT_EXPORT SoJointAMotor : public SoJoint
00037 {
00038 SO_KIT_HEADER(SoJointAMotor);
00039
00040 public:
00041 SoJointAMotor(const SbString& BodyOne = "", const SbString& BodyTwo = "", const SbString& nodeName = "");
00042
00043 static void initClass();
00044
00045 virtual void setParams();
00046
00047 virtual void setTorque(dReal torque1 = 0.0f, dReal torque2 = 0.0f, dReal torque3 = 0.0f);
00048
00049 enum MotorMode {
00050 eMMUserMode = 0,
00051 eMMEulerMode = 1
00052 };
00053
00054 SoSFInt32 soNumberAxes;
00055 SoSFInt32 soMotorMode;
00056 SoMFVec3f soAxis;
00057 SoMFVec3f soAngle;
00058 SoSFVec3f soTorque;
00059 SoMFInt32 soRelativeOrientation;
00060
00061 SoSFFloat LoStop;
00062 SoSFFloat HiStop;
00063 SoSFFloat Velocity;
00064 SoSFFloat MaxForce;
00065 SoSFFloat FudgeFactor;
00066 SoSFFloat Bounce;
00067 SoSFFloat CFM;
00068 SoSFFloat StopERP;
00069 SoSFFloat StopCFM;
00070 SoSFFloat SuspensionERP;
00071 SoSFFloat SuspensionCFM;
00072
00073 SoSFFloat LoStop2;
00074 SoSFFloat HiStop2;
00075 SoSFFloat Velocity2;
00076 SoSFFloat MaxForce2;
00077 SoSFFloat FudgeFactor2;
00078 SoSFFloat Bounce2;
00079 SoSFFloat CFM2;
00080 SoSFFloat StopERP2;
00081 SoSFFloat StopCFM2;
00082 SoSFFloat SuspensionERP2;
00083 SoSFFloat SuspensionCFM2;
00084
00085 SoSFFloat LoStop3;
00086 SoSFFloat HiStop3;
00087 SoSFFloat Velocity3;
00088 SoSFFloat MaxForce3;
00089 SoSFFloat FudgeFactor3;
00090 SoSFFloat Bounce3;
00091 SoSFFloat CFM3;
00092 SoSFFloat StopERP3;
00093 SoSFFloat StopCFM3;
00094 SoSFFloat SuspensionERP3;
00095 SoSFFloat SuspensionCFM3;
00096
00097 protected:
00098 virtual void createOdeJoint(const dWorldID soWorldId);
00099 virtual void updateOdeJointProperties(const SbMatrix& modelMatrix);
00100 virtual SoNode* createVisualisation();
00101
00102 float initVelocity[3];
00103 float initMaxForce[3];
00104 SbVec3f initTorque;
00105 };
00106
00107 #endif
00108