00001 #ifndef PH_JOINT_CONTROL_H
00002 #define PH_JOINT_CONTROL_H
00003
00004 #include <Physics/PHJointPid.h>
00005
00006 namespace Spr{;
00007
00008 DEF_RECORD(XJointControl,{
00009 GUID Guid(){ return WBGuid("5A6DCC8B-BAD2-4baf-8F20-0EE5FB625996"); }
00010 FLOAT start;
00011 FLOAT end;
00012 FLOAT phase;
00013 FLOAT vel;
00014 });
00015 DEF_RECORD(XJointControlEngine,{
00016 GUID Guid(){ return WBGuid("99971AA7-9DCE-40fd-9B0E-3C65BFFC17D9"); }
00017 FLOAT period;
00018 FLOAT vel;
00019 });
00020 class PHJointControl:public SGObject, public XJointControl{
00021 SGOBJECTDEF(PHJointControl);
00022 public:
00023 class TJoints:public std::vector< UTRef<PHJointPid> >{
00024 public:
00025 };
00026 TJoints joints;
00027 virtual void Step(float pos);
00028
00029
00030 virtual size_t NReferenceObjects();
00031
00032 virtual SGObject* ReferenceObject(size_t i);
00033
00034 virtual bool AddChildObject(SGObject* o, SGScene* s);
00035
00036 virtual bool DelChildObject(SGObject* o, SGScene* s);
00037
00038 virtual void Loaded(SGScene* scene);
00039 };
00040 class PHJointControlEngine:public SGBehaviorEngine, public XJointControlEngine{
00041 SGOBJECTDEF(PHJointControlEngine);
00042 public:
00043 float time;
00044 class TJointControls:public std::vector< UTRef<PHJointControl> >{
00045 };
00046 TJointControls jcs;
00047
00048 PHJointControlEngine();
00049
00050 void Step(SGScene* scene);
00051
00052 virtual size_t NChildObjects();
00053
00054 virtual SGObject* ChildObject(size_t i);
00055
00056 virtual bool AddChildObject(SGObject* o, SGScene* s);
00057
00058 virtual bool DelChildObject(SGObject* o, SGScene* s);
00059 virtual void Loaded(SGScene* s);
00060 };
00061
00062
00063 }
00064
00065 #endif