VR-Forces 4.0.4 Class Documentation
include/vrfmodel/occupancyDirectorController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: occupancyDirectorController.h,v $ $Revision: 1.19 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 
00016 #ifndef DtOccupancyDirectorController_H_
00017 #define DtOccupancyDirectorController_H_
00018 
00019 #include "vrfobjcore/singleTaskControllerComponent.h"
00020 #include "vrfobjcore/occupancyDirectorPSR.h"
00021 #include "vrfobjcore/embarkationSlotManager.h"
00022 
00023 #include <list>
00024 
00025 class DtEmbarkationSlotEntry;
00026 class DtOccupancyDirectorDescriptor;
00027 class DtSimMessage;
00028 class DtEmbarkationSlotManager;
00029 class DtCollisionDetector;
00030 
00047 #include "vrfmodel/vrfmodelDefines.h"
00048 class DT_DLL_vrfmodel DtOccupancyDirectorController : public DtSingleTaskControllerComponent
00049 {
00050 public:
00051 
00054    DtOccupancyDirectorController(const DtString& name, 
00055       DtVrfObject* owner,
00056       DtSimManager* simManager, 
00057       DtComponentDescriptor* desc = 0,
00058       DtReaderWriterRegistry* parentRegistry = 0);
00059 
00061    virtual ~DtOccupancyDirectorController();
00062 
00064    virtual bool init();
00065 
00068    virtual DtString type() const;
00069 
00073    static DtSimComponent * creator(const DtString& name, 
00074       DtVrfObject* owner,
00075       DtSimManager* simManager, 
00076       DtComponentDescriptor* desc = 0,
00077       DtReaderWriterRegistry* parentRegistry = 0);
00078 
00079 public:
00080    static void requestEmbarkationInformationCallback(DtSimMessage* msg, void* usr);
00081    virtual void processRequestEmbarkationInformation(DtSimMessage* msg);
00082 
00083 protected:
00085    virtual void registerTaskMsgCallbacks();
00086 
00088    virtual void tick();
00089 
00095    virtual bool createPSR();
00096 
00098    virtual void giveUpSlot(int iSlot, const DtString& name);
00099 
00101    virtual DtEmbarkationSlotInformation embarkationSlotEntryFor(const DtString&) const;
00102 
00105    virtual DtEmbarkationSlotInformation disembarkationInformationFor(const DtString&, int& iResult) const;
00106 
00108    virtual int disembarkationResult(const DtEmbarkationSlotInformation&) const;
00109 
00112    virtual bool reserveSlot(const DtEmbarkationSlotInformation& entry, const DtString& name);
00113 
00116    virtual void sendSlotInformationTo(const DtString& name,
00117       const DtEmbarkationSlotInformation& entry, int, int reqId = 0xFFFFFFFF);
00118 
00120    static void deleteVrfObjectCallback(DtVrfObject * msg, void * usr);
00121    virtual void processDeleteVrfObjectCallback(DtVrfObject* obj);
00122 
00127    virtual void processDisembarkAllTask(DtSimMessage* msg);
00128    static void disembarkAllTaskCallback(DtSimMessage* msg, void* usr);
00129 
00131    virtual bool objectDisembarked(const DtString& objectName);
00135    virtual void disembarkNextObject();
00136 
00138    virtual void sendTask(const DtSimTask& task, const DtString& objectName);
00139 
00141    static void disembarkObjectCallback(DtSimMessage* msg, void* usr);
00144    virtual void processDisembarkObjectCallback(DtSimMessage* msg);
00145 
00157    virtual DtVector disembarkedPositionFor(const DtString& entityName, const DtEmbarkationSlotInformation&) const;
00158 
00161    virtual bool nextEntityCanDisembark(const DtVrfObject* curEntity) const;
00162 
00164    virtual bool isValidForDisembarkLayout(const DtVrfObject*) const;
00165 
00167    virtual bool createCollisionDetector();
00168 
00170    virtual void setObstructionIDsInCollisionDetector();
00171 
00172 protected:
00176    virtual void setupSlots();
00177 
00180    virtual void initializeSlotManager();
00181 
00184    virtual void calculateDisembarkPositions(const std::list<DtString>&);
00185 
00188    virtual void generateListForDisembarkation(std::list<DtString>& list);
00189 
00191    virtual void removeAllSubordinates(DtVrfObject* obj);
00192 
00193 private:
00194    
00196    DtOccupancyDirectorController();
00197 
00199    DtOccupancyDirectorController(const DtOccupancyDirectorController & 
00200       orig);
00201 
00203    const DtOccupancyDirectorController & operator=(const 
00204       DtOccupancyDirectorController & orig);
00205 
00206 protected:
00207 
00210    DtVrfOccupancyDirectorPSR*       myProcessState;
00211    
00212    bool                             myFirstTick;
00213    const DtOccupancyDirectorDescriptor*   myOccupancyDirectorDescriptor;
00214    DtEmbarkationSlotManager*        mySlotManager;
00215    DtCollisionDetector*             myCollisionDetector;
00216 
00219    std::set<DtString> myObjectsToDisembark;
00220 };
00221 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)