#pragma once #include "node.h" #include "slot.h" #include "collorgn.h" //########################################################################## //####################### CollisionAssistant ######################### //########################################################################## class Mover; class CollisionAssistant: public Node { friend class CollisionAssistant__MovingEntityIterator; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Public Types // public: typedef CollisionAssistant__MovingEntityIterator MovingEntityIterator; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction, Destruction, Testing // public: CollisionAssistant(InterestZoneID interest_zone_ID); ~CollisionAssistant(); Logical TestInstance() const; static CollisionAssistant* Make(Mover *mover); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Update // public: void Update(InterestZoneID interest_zone_ID); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Private // private: void LinkToInterestZone(InterestZoneID interest_zone_ID); InterestZoneID currentInterestZoneID; SlotOf collisionOriginSocket; }; //~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~ class CollisionAssistant__MovingEntityIterator: public CollisionOrigin__MovingEntityIterator { public: CollisionAssistant__MovingEntityIterator( CollisionAssistant *collision_assistant ); ~CollisionAssistant__MovingEntityIterator(); }; #if 0 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CollisionAssistant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class CollisionAssistant: public Renderer { friend class CollisionAssistant__MovingEntityIterator; public: // //-------------------------------------------------------------------- // Public Types //-------------------------------------------------------------------- // typedef CollisionAssistant__MovingEntityIterator MovingEntityIterator; // //-------------------------------------------------------------------- // Construction, Destruction, Testing //-------------------------------------------------------------------- // CollisionAssistant(RendererRate render_rate); ~CollisionAssistant(); Logical TestInstance() const; static CollisionAssistant* Make(Mover *mover); // //-------------------------------------------------------------------- // LinkToEntity //-------------------------------------------------------------------- // void LinkToMover(Mover *mover); // //-------------------------------------------------------------------- // NotifyOfNewInterestingEntity //-------------------------------------------------------------------- // void NotifyOfNewInterestingEntity(Entity *interesting_entity); // //-------------------------------------------------------------------- // NotifyOfBecomingUninterestingEntity //-------------------------------------------------------------------- // void NotifyOfBecomingUninterestingEntity(Entity *uninteresting_entity); // //-------------------------------------------------------------------- // GetCollisionRoot //-------------------------------------------------------------------- // BoxedSolidTree* GetCollisionRoot(); protected: // //-------------------------------------------------------------------- // ExecuteImplementation //-------------------------------------------------------------------- // void ExecuteImplementation( RendererComplexity complexity_update, InterestOrigin::InterestingEntityIterator *iterator ); private: // //-------------------------------------------------------------------- // Private methods //-------------------------------------------------------------------- // void LoadMissionImplementation(Mission*) {} void ShutdownImplementation() {} void SuspendImplementation() {} void ResumeImplementation() {} // //-------------------------------------------------------------------- // Private data //-------------------------------------------------------------------- // SChainOf movingEntitySocket; }; //~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class CollisionAssistant__MovingEntityIterator: public SChainIteratorOf { public: CollisionAssistant__MovingEntityIterator( CollisionAssistant *collision_assistant ); ~CollisionAssistant__MovingEntityIterator(); }; #endif