VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
embarkationController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2005 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
14 
18 
19 
20 class DtString;
22 class DtTaskMessage;
25 class DtSetDataRequest;
26 class DtStringOutputPort;
27 
28 #include <list>
29 
42 {
43 public:
44 
47  DtEmbarkationController(const DtString& name,
48  DtLocalObject* owner,
49  DtSimulationServices* simManager,
50  DtComponentDescriptor* desc = 0,
51  DtReaderWriterRegistry* parentRegistry = 0);
52 
54  virtual ~DtEmbarkationController();
55 
57  virtual bool init();
58 
61  virtual const char* type() const;
62 
66  static DtSimComponent * creator(const DtString& name,
67  DtLocalObject* owner,
68  DtSimulationServices* simManager,
69  DtComponentDescriptor* desc = 0,
70  DtReaderWriterRegistry* parentRegistry = 0);
71 
72 protected:
73 
75  virtual bool createPorts();
76 
78  virtual void registerTaskMsgCallbacks();
79 
81  virtual void unregisterTaskMsgCallbacks();
82 
84  virtual void preFirstTickInit();
85 
87  virtual void tick();
88 
90  virtual void clearCurrentTaskMessage();
91 
93  virtual void suspendTask();
94 
96  virtual void clearTask();
97 
99 protected:
101  virtual void processDisembarkTask(DtSimMessage* msg);
102  static void disembarkTaskCallback(DtSimMessage* msg, void* usr);
103 
106  virtual void checkAndSetEgressPosture();
107 
113  virtual void processEmbarkTask(DtSimMessage* msg);
114  static void embarkTaskCallback(DtSimMessage* msg, void* usr);
115 
118  static void embarkObjectCallback(DtSimMessage* msg, void* usr);
119  virtual void processEmbarkObjectCallback(DtSimMessage* msg);
120 
121  static void disembarkObjectCallback(DtSimMessage* msg, void* usr);
122  virtual void processDisembarkObjectCallback(DtSimMessage* msg);
123 
127  static void embarkationInformationCallback(DtSimMessage* msg, void* usr);
128  virtual void processEmbarkationInformationCallback(DtSimMessage* msg);
129 
130 protected:
132  virtual void processLoadEntity(DtSimMessage * msg);
133  virtual void processUnloadEntity(DtSimMessage * msg);
134 
135  static void setLoadEntityCallback(DtSimMessage * msg, void * usrData);
136  static void setUnloadEntityCallback(DtSimMessage * msg, void * usrData);
137 
140  static void setEmbarkationLockedCallback(DtSimMessage * msg, void * usrData);
141  virtual void processEmbarkationLocked(DtSimMessage * msg);
143 
147  virtual void unload(const DtVector& point, int appearance = 0xFFFFFFFF);
148 
151  static void deleteVrfObjectCallback(const DtLocalObject* msg, void * usr);
152  virtual void processDeleteVrfObjectCallback(const DtLocalObject* obj);
153 
157  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
158  virtual void processTaskComplete(DtSimMessage * msg);
159 
160 protected:
164  virtual bool clampOnPlacement() const;
165 
168  virtual bool performTechnique();
169 
180  virtual bool sendTechniqueTask(const DtSimTaskMessageType& task);
181 
183  virtual void performingEmbarkTechnique();
184 
186  virtual void performingDisembarkTechnique();
187 
190  virtual void moveToEgress();
191 
193  virtual void movingToEgress();
194 
196  virtual void disembark();
197 
199  virtual void sendTask(const DtSimTask& task, const DtUUID& to);
200 
202  virtual void removeControlPoint();
203 
207  virtual void moveToIngress(const DtUUID& parent);
208 
209  virtual void createControlPoint(const DtVector& location,
210  const DtUUID& parent);
211 
212  virtual void createRoute(const std::vector<DtVector>&,
213  const DtUUID& parent);
214 
217  virtual void moveToEmbarkationPoint();
218 
224  virtual void atEmbarkationPoint();
225 
228  virtual void waitingToStop();
229 
233  virtual void movingToIngress();
234 
236  virtual void embarkObject(bool overridePosition,
237  const DtVector& loadPosition, int slotNumber,
238  const DtUUID& parent, const DtString& slotName = "*", const DtString& slotType = "*", int appearance = 0xFFFFFFFF,
239  const DtTaitBryan& orientation = DtTaitBryan(),
240  const DtVector& acceleration = DtVector(),
241  const DtVector& velocty = DtVector(),
242  bool invisibleWhenEmbarked = false,
243  const DtString& animation = DtString::nullString());
244 
249  virtual void unloadObject(const DtVector& unloadPoint, int appearance = 0xFFFFFFFF);
250 
252  virtual void embark(const DtVector& loadPosition, const DtUUID& parent,
253  int appearance = 0xFFFFFFFF, const DtTaitBryan& orientation = DtTaitBryan(),
254  const DtVector& acceleration = DtVector(),
255  const DtVector& velocty = DtVector(),
256  bool invisibleWhenEmbarked = false,
257  const DtString& animation = DtString::nullString());
258 
261  virtual void movingToEmbarkationPoint();
262 
264  virtual void stoppedAtEmbarkedPoint();
265 
269 
270  virtual bool isEmbarkationState(DtVrfEmbarkationPSR::DtEmbarkationControllerState) const;
271 
277  virtual bool createPSR();
278 
281  virtual void setupExistingConditions();
282 
285  virtual void completeEmbarkationInformationRequest(
287 
290  virtual void embarkationRefused(const DtIfEmbarkationInformation*);
291 
294  virtual void completeDisembarkationInformationRequest(
296 
299  virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
300 
303  virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&,
304  const DtUUID& parent) const;
305 
308  virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
309 
311  virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
312 
315  virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
316 
319  virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
320 
323  virtual void issueMoveToEgressTask();
324  virtual void issueMoveToIngressTask();
325 
328  virtual void issueMoveAlongToEgressTask();
329  virtual void issueMoveAlongToIngressTask();
330 
333  virtual void issueMoveToEmbarkationPointTask();
334 
336  virtual DtVector currentBodyPosition(const DtUUID& parent) const;
337  virtual DtTaitBryan currentBodyOrientation(const DtUUID& parent) const;
338  virtual DtVector currentBodyVelocity(const DtUUID& parent) const;
339  virtual DtVector currentBodyAcceleration(const DtUUID& parent) const;
340 
341 protected:
351  virtual bool requestEmbarkationInformationFrom(const DtUUID& parent,
352  bool start = false, int embarkInSlot = -1, const DtString& slotName = "*",
353  const DtString& slotType = "*", bool anyIfTaken = true);
354  virtual bool requestDisembarkationInformationFrom(const DtUUID& parent,
355  bool start = false);
356 
358  virtual void requestGiveUpSlot(const DtUUID& parent);
359 
360  virtual void waitingForEmbarkationInformation();
361  virtual void waitingForDisembarkationInformation();
362 
364  virtual void placeObject(bool clamp = false);
365 
367  virtual void placeObject(const DtVector& geocLocation, const DtTaitBryan& orientation, bool clamp);
368 
370  virtual void setLocation(const DtVector&);
371 
378  virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
379 
381  virtual void sendSetRequest(DtSetDataRequest& request);
382 
383  virtual void processDisembarkationState(const DtVector& bodyExitPosition);
384  virtual void movingToFinalDestination();
385  virtual void moveToFinalDestination();
386 
389  virtual void preprocessEmbarkTask();
390  virtual void preprocessDisembarkTask();
391 
394  virtual bool checkEmbarkOk(const DtUUID& parent) const;
395 
399  virtual void updateDisembarkedAppearanceAndAnimation(int appearance);
400 
405  virtual void updateEmbarkedAppearanceAndAnimation(int, const DtString&);
406  virtual void updateLifeformEmbarkedAppearanceAndAnimation(int, const DtString&);
407 
410  virtual void attachToEmbarkedParent(const DtUUID& newParent);
411 
415  virtual DtVector fallbackOffloadPoint();
416 
418  virtual void enable();
419 
421  virtual void disable();
422 
424  virtual DtIfEmbarkationInformation createEmbarkationInformationFromProcessState() const;
425 
428  virtual bool parentOnGround();
429 
432  static void setHeadingCallback(DtSimMessage*, void* usr);
433  virtual void processSetHeading();
434 
435 private:
436 
439 
442  orig);
443 
445  const DtEmbarkationController & operator=(const
446  DtEmbarkationController & orig);
447 
448 protected:
449  std::list<DtString> myEmbarkedObjects;
450 
454 
460  bool myWaiting;
461 
463 
467 
472 
476 
478 
485 
487  bool myInvisibleSetByUserDuringEmbark = false;
488 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
double myRequestTime
Definition: embarkationController.h:464
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
class DtVrfEmbarkationPSR:
Definition: vrfEmbarkationPSR.h:31
Instances of DtStringOutputPort are output ports through which data producers can send a DtString obj...
Definition: stringIOPort.h:52
virtual void disable() override
Overridden to allow tasks controllers that can be disabled to call task complete. ...
virtual void suspendTask()
This method is called when the currently running task is being suspended. The default implementation ...
DtVector myLoadOverridePosition
Definition: embarkationController.h:470
bool myResetAnimationIfNoLongerEmbarked
Definition: embarkationController.h:484
DtUUID myParentToLoadOn
Definition: embarkationController.h:471
DtEmbarkationControllerState
Definition: vrfEmbarkationPSR.h:34
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
DtVrfEmbarkationPSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: embarkationController.h:453
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
DtEmbarkationController is a controller that supports base level embarkation/disembarkation for entit...
Definition: embarkationController.h:41
std::list< DtString > myEmbarkedObjects
Definition: embarkationController.h:449
virtual bool init() override
Calls setRadio()
bool myWaiting
If myWaiting is true, the controller is waiting for some condition to be met, so, the controller will...
Definition: embarkationController.h:460
DtSetDataRequest is an abstract base class from which real setDataRequests can derive. It manages the read/write capability; derived classes need only use and register read/writatble data types for derived information.
Definition: setDataRequest.h:41
Instances of this class are the interface message content used to request return requested embarkatio...
Definition: ifEmbarkationInformation.h:39
int myRequestRetries
Definition: embarkationController.h:465
File: simMsg.h.
Definition: simMessage.h:35
bool myRemoveSetHeadingNotifyCallback
Definition: embarkationController.h:475
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
bool myAreCallbacksRegistered
Definition: embarkationController.h:466
Instances of DtEmbarkationDescriptor are used to specify the parameters for a DtEmbarkationController...
Definition: embarkationDescriptor.h:24
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
bool myClampOnReceiveEmbarkationInformation
Definition: embarkationController.h:477
DtStringOutputPort * myOrderedAnimationPort
Output Port Name: ordered-animation Output Port Description: Specifies an animation to be used as lon...
Definition: embarkationController.h:483
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:91
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
virtual void enable() override
Overridden to call registerTaskMsgCallbacks().
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
virtual void clearTask() override
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtEmbarkationDescriptor * myEmbarkationDescriptor
Definition: embarkationController.h:462
DtMovementLocalObjectFacade myMovementLocalObjectFacade
Definition: embarkationController.h:486
bool myResetGroundClampOnDisembarkValue
Definition: embarkationController.h:474
bool myUseLoadOverrideIfNoSlotAvailable
Will be set if the embarkation request is to use an override position if no slots are available...
Definition: embarkationController.h:469
A DtTaskMsg is a DtRadioMsg with a pointer to a task. The type of the taskMsg is just the type of the...
Definition: taskMessage.h:21
virtual void clearCurrentTaskMessage()
Returns the current subtask with the specified id. Also returns the controller that is responsible...
bool myResetGroundClampOnDisembark
Definition: embarkationController.h:473
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)