00001 #pragma once
00002 #include "PHSolid.h"
00003 #include <SceneGraph/SGScene.h>
00004 #include <Physics/PHConvexPair.h>
00005 #include <Collision/CDCollisionEngine.h>
00006 #include <Collision/CDPolyhedron.h>
00007
00008 namespace Spr{;
00009
00010
00011 class PHStick: public SGObject{
00012 public:
00013 SGOBJECTDEF(PHStick);
00014 UTRef<SGFrame> frame[2];
00015 float force;
00016 bool AddChildObject(SGObject* o, SGScene* s);
00017 };
00018 class PHContactEngine;
00019
00020 class PHStickEngine:public SGBehaviorEngine, CDCollisionListener{
00021 public:
00022 protected:
00023 int listenerPos;
00024 int framePairRecordPos;
00025 PHContactEngine* contactEngine;
00026 public:
00027
00028 typedef std::vector< UTRef<PHStick> > Sticks;
00029 Sticks sticks;
00030
00031 SGOBJECTDEF(PHStickEngine);
00032 bool AddChildObject(SGObject* o, SGScene* s);
00033 void After(SGScene* scene, CDFramePairWithRecord* fr);
00034
00035 int GetPriority() const { return SGBP_STICKENGINE; }
00036
00037 virtual void Step(SGScene* s){}
00038
00039 virtual void Clear(SGScene* s);
00040
00041 virtual void Loaded(SGScene* scene);
00042 };
00043
00044
00045 }