VR-Forces 4.10 Class Documentation
 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 
10 
13 
17 
18 
19 class DtString;
20 class DtSimManager;
21 class DtTaskMessage;
24 class DtSetDataRequest;
25 class DtStringOutputPort;
26 
27 #include <list>
28 
41 {
42 public:
43 
46  DtEmbarkationController(const DtString& name,
47  DtVrfObject* owner,
48  DtSimManager* simManager,
49  DtComponentDescriptor* desc = 0,
50  DtReaderWriterRegistry* parentRegistry = 0);
51 
53  virtual ~DtEmbarkationController();
54 
56  virtual bool init();
57 
60  virtual const char* type() const;
61 
65  static DtSimComponent * creator(const DtString& name,
66  DtVrfObject* owner,
67  DtSimManager* simManager,
68  DtComponentDescriptor* desc = 0,
69  DtReaderWriterRegistry* parentRegistry = 0);
70 
71 protected:
72 
74  virtual bool createPorts();
75 
77  virtual void registerTaskMsgCallbacks();
78 
80  virtual void unregisterTaskMsgCallbacks();
81 
83  virtual void preFirstTickInit();
84 
86  virtual void tick();
87 
89  virtual void clearCurrentTaskMessage();
90 
92  virtual void suspendTask();
93 
95  virtual void clearTask();
96 
98 protected:
100  virtual void processDisembarkTask(DtSimMessage* msg);
101  static void disembarkTaskCallback(DtSimMessage* msg, void* usr);
102 
105  virtual void checkAndSetEgressPosture();
106 
112  virtual void processEmbarkTask(DtSimMessage* msg);
113  static void embarkTaskCallback(DtSimMessage* msg, void* usr);
114 
117  static void embarkObjectCallback(DtSimMessage* msg, void* usr);
118  virtual void processEmbarkObjectCallback(DtSimMessage* msg);
119 
120  static void disembarkObjectCallback(DtSimMessage* msg, void* usr);
121  virtual void processDisembarkObjectCallback(DtSimMessage* msg);
122 
126  static void embarkationInformationCallback(DtSimMessage* msg, void* usr);
127  virtual void processEmbarkationInformationCallback(DtSimMessage* msg);
128 
129 protected:
131  virtual void processLoadEntity(DtSimMessage * msg);
132  virtual void processUnloadEntity(DtSimMessage * msg);
133 
134  static void setLoadEntityCallback(DtSimMessage * msg, void * usrData);
135  static void setUnloadEntityCallback(DtSimMessage * msg, void * usrData);
136 
140  virtual void unload(const DtVector& point, int appearance = 0xFFFFFFFF);
141 
144  static void deleteVrfObjectCallback(const DtVrfObject* msg, void * usr);
145  virtual void processDeleteVrfObjectCallback(const DtVrfObject* obj);
146 
150  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
151  virtual void processTaskComplete(DtSimMessage * msg);
152 
153 protected:
156  virtual bool performTechnique();
157 
168  virtual bool sendTechniqueTask(const DtSimTaskMessageType& task);
169 
171  virtual void performingEmbarkTechnique();
172 
174  virtual void performingDisembarkTechnique();
175 
178  virtual void moveToEgress();
179 
181  virtual void movingToEgress();
182 
184  virtual void disembark();
185 
187  virtual void sendTask(const DtSimTask& task, const DtUUID& to);
188 
190  virtual void removeControlPoint();
191 
195  virtual void moveToIngress(const DtUUID& parent);
196 
197  virtual void createControlPoint(const DtVector& location,
198  const DtUUID& parent);
199 
200  virtual void createRoute(const std::vector<DtVector>&,
201  const DtUUID& parent);
202 
205  virtual void moveToEmbarkationPoint();
206 
212  virtual void atEmbarkationPoint();
213 
216  virtual void waitingToStop();
217 
221  virtual void movingToIngress();
222 
224  virtual void embarkObject(bool overridePosition,
225  const DtVector& loadPosition, int slotNumber,
226  const DtUUID& parent, const DtString& slotName = "*", const DtString& slotType = "*", int appearance = 0xFFFFFFFF,
227  const DtTaitBryan& orientation = DtTaitBryan(),
228  const DtVector& acceleration = DtVector(),
229  const DtVector& velocty = DtVector(),
230  bool invisibleWhenEmbarked = false,
231  const DtString& animation = DtString::nullString());
232 
237  virtual void unloadObject(const DtVector& unloadPoint, int appearance = 0xFFFFFFFF);
238 
240  virtual void embark(const DtVector& loadPosition, const DtUUID& parent,
241  int appearance = 0xFFFFFFFF, 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 
249  virtual void movingToEmbarkationPoint();
250 
252  virtual void stoppedAtEmbarkedPoint();
253 
257 
258  virtual bool isEmbarkationState(DtVrfEmbarkationPSR::DtEmbarkationControllerState) const;
259 
265  virtual bool createPSR();
266 
269  virtual void setupExistingConditions();
270 
273  virtual void completeEmbarkationInformationRequest(
275 
278  virtual void embarkationRefused(const DtIfEmbarkationInformation*);
279 
282  virtual void completeDisembarkationInformationRequest(
284 
287  virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
288 
291  virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&,
292  const DtUUID& parent) const;
293 
296  virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
297 
299  virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
300 
303  virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
304 
307  virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
308 
311  virtual void issueMoveToEgressTask();
312  virtual void issueMoveToIngressTask();
313 
316  virtual void issueMoveAlongToEgressTask();
317  virtual void issueMoveAlongToIngressTask();
318 
321  virtual void issueMoveToEmbarkationPointTask();
322 
324  virtual DtVector currentBodyPosition(const DtUUID& parent) const;
325  virtual DtTaitBryan currentBodyOrientation(const DtUUID& parent) const;
326  virtual DtVector currentBodyVelocity(const DtUUID& parent) const;
327  virtual DtVector currentBodyAcceleration(const DtUUID& parent) const;
328 
329 protected:
339  virtual bool requestEmbarkationInformationFrom(const DtUUID& parent,
340  bool start = false, int embarkInSlot = -1, const DtString& slotName = "*",
341  const DtString& slotType = "*", bool anyIfTaken = true);
342  virtual bool requestDisembarkationInformationFrom(const DtUUID& parent,
343  bool start = false);
344 
346  virtual void requestGiveUpSlot(const DtUUID& parent);
347 
348  virtual void waitingForEmbarkationInformation();
349  virtual void waitingForDisembarkationInformation();
350 
352  virtual void placeObject(bool clamp = false);
353 
355  virtual void setLocation(const DtVector&);
356 
363  virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
364 
366  virtual void sendSetRequest(DtSetDataRequest& request);
367 
368  virtual void processDisembarkationState(const DtVector& bodyExitPosition);
369  virtual void movingToFinalDestination();
370  virtual void moveToFinalDestination();
371 
374  virtual void preprocessEmbarkTask();
375  virtual void preprocessDisembarkTask();
376 
379  virtual bool checkEmbarkOk(const DtUUID& parent) const;
380 
384  virtual void updateDisembarkedAppearanceAndAnimation(int appearance);
385 
390  virtual void updateEmbarkedAppearanceAndAnimation(int, const DtString&);
391  virtual void updateLifeformEmbarkedAppearanceAndAnimation(int, const DtString&);
392 
395  virtual void attachToEmbarkedParent(const DtUUID& newParent);
396 
400  virtual DtVector fallbackOffloadPoint();
401 
403  virtual void enable();
404 
406  virtual void disable();
407 
409  virtual DtIfEmbarkationInformation createEmbarkationInformationFromProcessState() const;
410 
413  virtual bool parentOnGround();
414 
417  static void setHeadingCallback(DtSimMessage*, void* usr);
418  virtual void processSetHeading();
419 
420 private:
421 
424 
427  orig);
428 
430  const DtEmbarkationController & operator=(const
431  DtEmbarkationController & orig);
432 
433 protected:
434  std::list<DtString> myEmbarkedObjects;
435 
441 
445 
451  bool myWaiting;
452 
454 
458 
463 
467 
469 
476 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
double myRequestTime
Definition: embarkationController.h:455
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
const DtVrfObject * myControlPoint
If this entity is embarking to an ingress point (or moving to the embarkation point), this object will be the point they are aiming for.
Definition: embarkationController.h:440
class DtVrfEmbarkationPSR:
Definition: vrfEmbarkationPSR.h:29
Instances of DtStringOutputPort are output ports through which data producers can send a DtString obj...
Definition: stringIOPort.h:52
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
virtual void suspendTask()
This method is called when the currently running task is being suspended.
DtVector myLoadOverridePosition
Definition: embarkationController.h:461
bool myResetAnimationIfNoLongerEmbarked
Definition: embarkationController.h:475
virtual void enable()
Overridden to call registerTaskMsgCallbacks().
DtUUID myParentToLoadOn
Definition: embarkationController.h:462
DtEmbarkationControllerState
Definition: vrfEmbarkationPSR.h:32
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.
Definition: embarkationController.h:444
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:42
Definition: readerWriterRegistry.h:39
DtEmbarkationController is a controller that supports base level embarkation/disembarkation for entit...
Definition: embarkationController.h:40
virtual const char * type() const =0
Returns a string identifies the class type of component.
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:434
bool myWaiting
If myWaiting is true, the controller is waiting for some condition to be met, so, the controller will...
Definition: embarkationController.h:451
DtSetDataRequest is an abstract base class from which real setDataRequests can derive.
Definition: setDataRequest.h:40
Instances of this class are the interface message content used to request return requested embarkatio...
Definition: ifEmbarkationInformation.h:39
int myRequestRetries
Definition: embarkationController.h:456
File: simMsg.h.
Definition: simMessage.h:35
bool myRemoveSetHeadingNotifyCallback
Definition: embarkationController.h:466
virtual void tick()
This gives the thread of control to the component.
bool myAreCallbacksRegistered
Definition: embarkationController.h:457
Instances of DtEmbarkationDescriptor are used to specify the parameters for a DtEmbarkationController...
Definition: embarkationDescriptor.h:24
virtual bool createPorts()
Called by init.
bool myClampOnReceiveEmbarkationInformation
Definition: embarkationController.h:468
DtStringOutputPort * myOrderedAnimationPort
Output Port Name: ordered-animation Output Port Description: Specifies an animation to be used as lon...
Definition: embarkationController.h:474
virtual void disable()
Overridden to allow tasks controllers that can be disabled to call task complete. ...
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:31
DtEmbarkationDescriptor * myEmbarkationDescriptor
Definition: embarkationController.h:453
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
bool myResetGroundClampOnDisembarkValue
Definition: embarkationController.h:465
bool myUseLoadOverrideIfNoSlotAvailable
Will be set if the embarkation request is to use an override position if no slots are available...
Definition: embarkationController.h:460
A DtTaskMsg is a DtRadioMsg with a pointer to a task.
Definition: taskMessage.h:19
virtual void clearCurrentTaskMessage()
Returns the current subtask with the specified id.
bool myResetGroundClampOnDisembark
Definition: embarkationController.h:464

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)