VR-Forces 5.0.1 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:
163  virtual bool performTechnique();
164 
175  virtual bool sendTechniqueTask(const DtSimTaskMessageType& task);
176 
178  virtual void performingEmbarkTechnique();
179 
181  virtual void performingDisembarkTechnique();
182 
185  virtual void moveToEgress();
186 
188  virtual void movingToEgress();
189 
191  virtual void disembark();
192 
194  virtual void sendTask(const DtSimTask& task, const DtUUID& to);
195 
197  virtual void removeControlPoint();
198 
202  virtual void moveToIngress(const DtUUID& parent);
203 
204  virtual void createControlPoint(const DtVector& location,
205  const DtUUID& parent);
206 
207  virtual void createRoute(const std::vector<DtVector>&,
208  const DtUUID& parent);
209 
212  virtual void moveToEmbarkationPoint();
213 
219  virtual void atEmbarkationPoint();
220 
223  virtual void waitingToStop();
224 
228  virtual void movingToIngress();
229 
231  virtual void embarkObject(bool overridePosition,
232  const DtVector& loadPosition, int slotNumber,
233  const DtUUID& parent, const DtString& slotName = "*", const DtString& slotType = "*", int appearance = 0xFFFFFFFF,
234  const DtTaitBryan& orientation = DtTaitBryan(),
235  const DtVector& acceleration = DtVector(),
236  const DtVector& velocty = DtVector(),
237  bool invisibleWhenEmbarked = false,
238  const DtString& animation = DtString::nullString());
239 
244  virtual void unloadObject(const DtVector& unloadPoint, int appearance = 0xFFFFFFFF);
245 
247  virtual void embark(const DtVector& loadPosition, const DtUUID& parent,
248  int appearance = 0xFFFFFFFF, const DtTaitBryan& orientation = DtTaitBryan(),
249  const DtVector& acceleration = DtVector(),
250  const DtVector& velocty = DtVector(),
251  bool invisibleWhenEmbarked = false,
252  const DtString& animation = DtString::nullString());
253 
256  virtual void movingToEmbarkationPoint();
257 
259  virtual void stoppedAtEmbarkedPoint();
260 
264 
265  virtual bool isEmbarkationState(DtVrfEmbarkationPSR::DtEmbarkationControllerState) const;
266 
272  virtual bool createPSR();
273 
276  virtual void setupExistingConditions();
277 
280  virtual void completeEmbarkationInformationRequest(
282 
285  virtual void embarkationRefused(const DtIfEmbarkationInformation*);
286 
289  virtual void completeDisembarkationInformationRequest(
291 
294  virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
295 
298  virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&,
299  const DtUUID& parent) const;
300 
303  virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
304 
306  virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
307 
310  virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
311 
314  virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
315 
318  virtual void issueMoveToEgressTask();
319  virtual void issueMoveToIngressTask();
320 
323  virtual void issueMoveAlongToEgressTask();
324  virtual void issueMoveAlongToIngressTask();
325 
328  virtual void issueMoveToEmbarkationPointTask();
329 
331  virtual DtVector currentBodyPosition(const DtUUID& parent) const;
332  virtual DtTaitBryan currentBodyOrientation(const DtUUID& parent) const;
333  virtual DtVector currentBodyVelocity(const DtUUID& parent) const;
334  virtual DtVector currentBodyAcceleration(const DtUUID& parent) const;
335 
336 protected:
346  virtual bool requestEmbarkationInformationFrom(const DtUUID& parent,
347  bool start = false, int embarkInSlot = -1, const DtString& slotName = "*",
348  const DtString& slotType = "*", bool anyIfTaken = true);
349  virtual bool requestDisembarkationInformationFrom(const DtUUID& parent,
350  bool start = false);
351 
353  virtual void requestGiveUpSlot(const DtUUID& parent);
354 
355  virtual void waitingForEmbarkationInformation();
356  virtual void waitingForDisembarkationInformation();
357 
359  virtual void placeObject(bool clamp = false);
360 
362  virtual void placeObject(const DtVector& geocLocation, const DtTaitBryan& orientation, bool clamp);
363 
365  virtual void setLocation(const DtVector&);
366 
373  virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
374 
376  virtual void sendSetRequest(DtSetDataRequest& request);
377 
378  virtual void processDisembarkationState(const DtVector& bodyExitPosition);
379  virtual void movingToFinalDestination();
380  virtual void moveToFinalDestination();
381 
384  virtual void preprocessEmbarkTask();
385  virtual void preprocessDisembarkTask();
386 
389  virtual bool checkEmbarkOk(const DtUUID& parent) const;
390 
394  virtual void updateDisembarkedAppearanceAndAnimation(int appearance);
395 
400  virtual void updateEmbarkedAppearanceAndAnimation(int, const DtString&);
401  virtual void updateLifeformEmbarkedAppearanceAndAnimation(int, const DtString&);
402 
405  virtual void attachToEmbarkedParent(const DtUUID& newParent);
406 
410  virtual DtVector fallbackOffloadPoint();
411 
413  virtual void enable();
414 
416  virtual void disable();
417 
419  virtual DtIfEmbarkationInformation createEmbarkationInformationFromProcessState() const;
420 
423  virtual bool parentOnGround();
424 
427  static void setHeadingCallback(DtSimMessage*, void* usr);
428  virtual void processSetHeading();
429 
430 private:
431 
434 
437  orig);
438 
440  const DtEmbarkationController & operator=(const
441  DtEmbarkationController & orig);
442 
443 protected:
444  std::list<DtString> myEmbarkedObjects;
445 
449 
455  bool myWaiting;
456 
458 
462 
467 
471 
473 
480 
482 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
double myRequestTime
Definition: embarkationController.h:459
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
class DtVrfEmbarkationPSR:
Definition: vrfEmbarkationPSR.h:30
Instances of DtStringOutputPort are output ports through which data producers can send a DtString obj...
Definition: stringIOPort.h:52
virtual void suspendTask()
This method is called when the currently running task is being suspended. The default implementation ...
DtVector myLoadOverridePosition
Definition: embarkationController.h:465
bool myResetAnimationIfNoLongerEmbarked
Definition: embarkationController.h:479
virtual void enable()
Overridden to call registerTaskMsgCallbacks().
DtUUID myParentToLoadOn
Definition: embarkationController.h:466
DtEmbarkationControllerState
Definition: vrfEmbarkationPSR.h:33
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:448
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
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
virtual const char * type() const =0
Returns a string identifies the class type of component. Type values are defined in compTypes...
virtual bool init()
Calls setRadio()
virtual void clearTask()
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
std::list< DtString > myEmbarkedObjects
Definition: embarkationController.h:444
bool myWaiting
If myWaiting is true, the controller is waiting for some condition to be met, so, the controller will...
Definition: embarkationController.h:455
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:460
File: simMsg.h.
Definition: simMessage.h:35
bool myRemoveSetHeadingNotifyCallback
Definition: embarkationController.h:470
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:461
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:472
DtStringOutputPort * myOrderedAnimationPort
Output Port Name: ordered-animation Output Port Description: Specifies an animation to be used as lon...
Definition: embarkationController.h:478
virtual void disable()
Overridden to allow tasks controllers that can be disabled to call task complete. ...
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
DtEmbarkationDescriptor * myEmbarkationDescriptor
Definition: embarkationController.h:457
DtMovementLocalObjectFacade myMovementLocalObjectFacade
Definition: embarkationController.h:481
bool myResetGroundClampOnDisembarkValue
Definition: embarkationController.h:469
bool myUseLoadOverrideIfNoSlotAvailable
Will be set if the embarkation request is to use an override position if no slots are available...
Definition: embarkationController.h:464
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:468
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 Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)