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() override;
55 
57  virtual bool init() override;
58 
61  virtual const char* type() const override;
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() override;
76 
78  virtual void registerTaskMsgCallbacks() override;
79 
81  virtual void unregisterTaskMsgCallbacks();
82 
84  virtual void preFirstTickInit() override;
85 
87  virtual void tick() override;
88 
90  virtual void clearCurrentTaskMessage() override;
91 
93  virtual void suspendTask() override;
94 
96  virtual void clearTask() override;
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:
131  virtual void unableToCompleteTask();
132 
134  virtual void processLoadEntity(DtSimMessage * msg);
135  virtual void processUnloadEntity(DtSimMessage * msg);
136 
137  static void setLoadEntityCallback(DtSimMessage * msg, void * usrData);
138  static void setUnloadEntityCallback(DtSimMessage * msg, void * usrData);
139 
142  static void setEmbarkationLockedCallback(DtSimMessage * msg, void * usrData);
143  virtual void processEmbarkationLocked(DtSimMessage * msg);
145 
149  virtual void unload(const DtVector& point, int appearance = 0xFFFFFFFF);
150 
153  static void deleteVrfObjectCallback(const DtLocalObject* msg, void * usr);
154  virtual void processDeleteVrfObjectCallback(const DtLocalObject* obj);
155 
159  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
160  virtual void processTaskComplete(DtSimMessage * msg);
161 
162 protected:
166  virtual bool clampOnPlacement() const;
167 
170  virtual bool performTechnique();
171 
182  virtual bool sendTechniqueTask(const DtSimTaskMessageType& task);
183 
185  virtual void performingEmbarkTechnique();
186 
188  virtual void performingDisembarkTechnique();
189 
192  virtual void moveToEgress();
193 
195  virtual void movingToEgress();
196 
198  virtual void disembark();
199 
201  virtual void sendTask(const DtSimTask& task, const DtUUID& to);
202 
204  virtual void removeControlPoint();
205 
209  virtual void moveToIngress(const DtUUID& parent);
210 
211  virtual void createControlPoint(const DtVector& location,
212  const DtUUID& parent);
213 
214  virtual void createRoute(const std::vector<DtVector>&,
215  const DtUUID& parent);
216 
219  virtual void moveToEmbarkationPoint();
220 
226  virtual void atEmbarkationPoint();
227 
230  virtual void waitingToStop();
231 
235  virtual void movingToIngress();
236 
238  virtual void embarkObject(bool overridePosition,
239  const DtVector& loadPosition, int slotNumber,
240  const DtUUID& parent, const DtString& slotName = "*", const DtString& slotType = "*", int appearance = 0xFFFFFFFF,
241  const DtTaitBryan& orientation = DtTaitBryan(),
242  const DtVector& acceleration = DtVector(),
243  const DtVector& velocty = DtVector(),
244  bool invisibleWhenEmbarked = false,
245  const DtString& animation = DtString::nullString());
246 
251  virtual void unloadObject(const DtVector& unloadPoint, int appearance = 0xFFFFFFFF);
252 
254  virtual void embark(const DtVector& loadPosition, const DtUUID& parent,
255  int appearance = 0xFFFFFFFF, const DtTaitBryan& orientation = DtTaitBryan(),
256  const DtVector& acceleration = DtVector(),
257  const DtVector& velocty = DtVector(),
258  bool invisibleWhenEmbarked = false,
259  const DtString& animation = DtString::nullString());
260 
263  virtual void movingToEmbarkationPoint();
264 
266  virtual void stoppedAtEmbarkedPoint();
267 
271 
272  virtual bool isEmbarkationState(DtVrfEmbarkationPSR::DtEmbarkationControllerState) const;
273 
279  virtual bool createPSR();
280 
283  virtual void setupExistingConditions();
284 
287  virtual void completeEmbarkationInformationRequest(
289 
292  virtual void embarkationRefused(const DtIfEmbarkationInformation*);
293 
296  virtual void completeDisembarkationInformationRequest(
298 
301  virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
302 
305  virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&,
306  const DtUUID& parent) const;
307 
310  virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
311 
313  virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
314 
317  virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
318 
321  virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
322 
325  virtual void issueMoveToEgressTask();
326  virtual void issueMoveToIngressTask();
327 
330  virtual void issueMoveAlongToEgressTask();
331  virtual void issueMoveAlongToIngressTask();
332 
335  virtual void issueMoveToEmbarkationPointTask();
336 
338  virtual DtVector currentParentPosition(const DtUUID& parent) const;
339  virtual DtTaitBryan currentParentOrientation(const DtUUID& parent) const;
340  virtual DtVector currentParentVelocity(const DtUUID& parent) const;
341  virtual DtVector currentParentAcceleration(const DtUUID& parent) const;
342 
343 protected:
353  virtual bool requestEmbarkationInformationFrom(const DtUUID& parent,
354  bool start = false, int embarkInSlot = -1, const DtString& slotName = "*",
355  const DtString& slotType = "*", bool anyIfTaken = true);
356  virtual bool requestDisembarkationInformationFrom(const DtUUID& parent,
357  bool start = false);
358 
360  virtual void requestGiveUpSlot(const DtUUID& parent);
361 
362  virtual void waitingForEmbarkationInformation();
363  virtual void waitingForDisembarkationInformation();
364 
366  virtual void placeObject(bool clamp = false);
367 
369  virtual void placeObject(const DtVector& geocLocation, const DtTaitBryan& orientation, bool clamp);
370 
372  virtual void setLocation(const DtVector&);
373 
380  virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
381 
383  virtual void sendSetRequest(DtSetDataRequest& request);
384 
385  virtual void processDisembarkationState(const DtVector& bodyExitPosition);
386  virtual void movingToFinalDestination();
387  virtual void moveToFinalDestination();
388 
391  virtual void preprocessEmbarkTask();
392  virtual void preprocessDisembarkTask();
393 
396  virtual bool checkEmbarkOk(const DtUUID& parent) const;
397 
401  virtual void updateDisembarkedAppearanceAndAnimation(int appearance);
402 
407  virtual void updateEmbarkedAppearanceAndAnimation(int, const DtString&);
408  virtual void updateLifeformEmbarkedAppearanceAndAnimation(int, const DtString&);
409 
412  virtual void attachToEmbarkedParent(const DtUUID& newParent);
413 
417  virtual DtVector fallbackOffloadPoint();
418 
420  virtual void enable() override;
421 
423  virtual void disable() override;
424 
426  virtual DtIfEmbarkationInformation createEmbarkationInformationFromProcessState() const;
427 
430  virtual bool parentOnGround();
431 
434  static void setHeadingCallback(DtSimMessage*, void* usr);
435  virtual void processSetHeading();
436 
437 private:
438 
441 
444  orig);
445 
447  const DtEmbarkationController & operator=(const
448  DtEmbarkationController & orig);
449 
450 protected:
451  std::list<DtString> myEmbarkedObjects;
452 
456 
462  bool myWaiting;
463 
465 
469 
474 
478 
480 
487 
489  bool myInvisibleSetByUserDuringEmbark = false;
490 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
double myRequestTime
Definition: embarkationController.h:466
#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:472
bool myResetAnimationIfNoLongerEmbarked
Definition: embarkationController.h:486
DtUUID myParentToLoadOn
Definition: embarkationController.h:473
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:455
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:451
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:462
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:467
File: simMsg.h.
Definition: simMessage.h:35
bool myRemoveSetHeadingNotifyCallback
Definition: embarkationController.h:477
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:468
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:479
DtStringOutputPort * myOrderedAnimationPort
Output Port Name: ordered-animation Output Port Description: Specifies an animation to be used as lon...
Definition: embarkationController.h:485
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
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:464
DtMovementLocalObjectFacade myMovementLocalObjectFacade
Definition: embarkationController.h:488
bool myResetGroundClampOnDisembarkValue
Definition: embarkationController.h:476
bool myUseLoadOverrideIfNoSlotAvailable
Will be set if the embarkation request is to use an override position if no slots are available...
Definition: embarkationController.h:471
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:475
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)