VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
occupancyDirectorController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 #pragma once
12 
16 
17 #include <list>
18 
21 class DtSimMessage;
24 
43 {
44 public:
45 
49  DtLocalObject* owner,
50  DtSimulationServices* simManager,
51  DtComponentDescriptor* desc = 0,
52  DtReaderWriterRegistry* parentRegistry = 0);
53 
55  virtual ~DtOccupancyDirectorController() override;
56 
58  virtual bool init() override;
59 
62  virtual const char* type() const override;
63 
67  static DtSimComponent * creator(const DtString& name,
68  DtLocalObject* owner,
69  DtSimulationServices* simManager,
70  DtComponentDescriptor* desc = 0,
71  DtReaderWriterRegistry* parentRegistry = 0);
72 
73 protected:
74  static void requestEmbarkationInformationCallback(DtSimMessage* msg, void* usr);
75  virtual void processRequestEmbarkationInformation(DtSimMessage* msg);
76 
77  static void requestEmbarkationSlotInformationCallback(DtSimMessage* msg, void* usr);
78  virtual void processRequestEmbarkationSlotInformation(DtSimMessage* msg);
79 
80  static void requestEmbarkationEgressPointsCallback(DtSimMessage* msg, void* usr);
81  virtual void processRequestEmbarkationEgressPoints(DtSimMessage* msg);
82 
83 protected:
85  virtual bool canPerformIngressTechnique(const DtString&) const;
86 
88  virtual bool canPerformEgressTechnique(const DtString&) const;
89 
91  virtual void registerTaskMsgCallbacks() override;
92 
95  virtual void preFirstTickInit() override;
96 
98  virtual void tick() override;
99 
105  virtual bool createPSR();
106 
108  virtual void giveUpSlot(int iSlot, const DtUUID&);
109 
111  virtual DtEmbarkationSlotInformation embarkationSlotEntryFor(const DtUUID&) const;
112  virtual DtEmbarkationSlotInformation embarkationSlotEntryFor(int slot, const DtUUID&) const;
113 
115  virtual DtEmbarkationSlotInformation embarkationSlotEntryFor(const DtString& slotName, const DtString& slotType, const DtUUID&) const;
116 
119  virtual DtEmbarkationSlotInformation disembarkationInformationFor(const DtUUID&, int& iResult) const;
120 
122  virtual int disembarkationResult(const DtEmbarkationSlotInformation&) const;
123 
126  virtual bool reserveSlot(const DtEmbarkationSlotInformation& entry, const DtUUID&);
127 
130  virtual void sendSlotInformationTo(const DtUUID&,
131  const DtEmbarkationSlotInformation& entry, int, bool forEmbarkation, int reqId = 0xFFFFFFFF);
132 
137  virtual void processDisembarkAllTask(DtSimMessage* msg);
138  static void disembarkAllTaskCallback(DtSimMessage* msg, void* usr);
139 
141  virtual bool objectDisembarked(const DtUUID&);
145  virtual void disembarkNextObject();
146 
148  virtual void sendTask(const DtSimTask& task, const DtUUID&);
149 
151  static void disembarkObjectCallback(DtSimMessage* msg, void* usr);
154  virtual void processDisembarkObjectCallback(DtSimMessage* msg);
155 
167  virtual DtVector disembarkedPositionFor(const DtUUID&, const DtEmbarkationSlotInformation&) const;
168 
171  virtual bool nextEntityCanDisembark(const DtSimObject* curEntity) const;
172 
174  virtual bool isValidForDisembarkLayout(const DtSimObject*) const;
175 
177  virtual bool createCollisionDetector();
178 
180  virtual void setObstructionIDsInCollisionDetector();
181 
182 protected:
186  virtual void setupSlots();
187 
190  virtual void initializeSlotManager();
191 
194  virtual void calculateDisembarkPositions(const std::vector<DtSimObjectReference>&);
195 
198  virtual void generateListForDisembarkation(const std::vector<DtSimObjectReference>& list);
199 
201  virtual void removeAllSubordinates(DtSimObjectReference obj);
202 
204  virtual void processSimObjectDeleted(DtSimObjectReference);
205 
208  virtual void getDisembarkableObjects(std::vector<DtSimObjectReference>& objects);
209 
210 private:
211 
214 
217  orig);
218 
222 
223 protected:
224 
228 
232 
235  std::set<DtString> myObjectsToDisembark;
236 
237  boost::signals2::scoped_connection mySimObjectDeletedConnection;
238 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Class DtOccupancyDirectorDescriptor is a DtComponentDescriptor that has parameters that configure the...
Definition: occupancyDirectorDescriptor.h:33
virtual void registerTaskMsgCallbacks()
Definition: embarkationSlotManager.h:92
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
DtCollisionDetector * myCollisionDetector
Definition: occupancyDirectorController.h:231
Definition: embarkationSlotManager.h:39
DtEmbarkationSlotEntry.
Definition: embarkationSlotEntry.h:27
const DtOccupancyDirectorDescriptor * myOccupancyDirectorDescriptor
Definition: occupancyDirectorController.h:229
virtual bool init() override
Calls setRadio()
File: simMsg.h.
Definition: simMessage.h:35
class DtVrfOccupancyDirectorPSR:
Definition: vrfOccupancyDirectorPSR.h:28
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
DtEmbarkationSlotManager * mySlotManager
Definition: occupancyDirectorController.h:230
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: occupancyDirectorController.h:237
The DtCollisionDetector is a class used to detect collisions between a specified list of obstructions...
Definition: collisionDetector.h:57
DtOccupancyDirectorController allocates reserved embarkation slots and determines which (if any) obje...
Definition: occupancyDirectorController.h:42
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:80
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
DtVrfOccupancyDirectorPSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: occupancyDirectorController.h:227
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
std::set< DtString > myObjectsToDisembark
Variable to control which units were disembarked by a superior to avoid multi messages.
Definition: occupancyDirectorController.h:235
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)