VR-Forces 4.7 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(DtVrfObject * msg, void * usr);
145  virtual void processDeleteVrfObjectCallback(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 
211  virtual void atEmbarkationPoint();
212 
214  virtual void waitingToStop();
215 
219  virtual void movingToIngress();
220 
222  virtual void embarkObject(bool overridePosition,
223  const DtVector& loadPosition, int slotNumber,
224  const DtUUID& parent, const DtString& slotName = "*", const DtString& slotType = "*", int appearance = 0xFFFFFFFF,
225  const DtTaitBryan& orientation = DtTaitBryan(),
226  const DtVector& acceleration = DtVector(),
227  const DtVector& velocty = DtVector(),
228  bool invisibleWhenEmbarked = false,
229  const DtString& animation = DtString::nullString());
230 
235  virtual void unloadObject(const DtVector& unloadPoint, int appearance = 0xFFFFFFFF);
236 
238  virtual void embark(const DtVector& loadPosition, const DtUUID& parent,
239  int appearance = 0xFFFFFFFF, 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 
247  virtual void movingToEmbarkationPoint();
248 
250  virtual void stoppedAtEmbarkedPoint();
251 
255 
256  virtual bool isEmbarkationState(DtVrfEmbarkationPSR::DtEmbarkationControllerState) const;
257 
263  virtual bool createPSR();
264 
267  virtual void setupExistingConditions();
268 
271  virtual void completeEmbarkationInformationRequest(
273 
276  virtual void embarkationRefused(const DtIfEmbarkationInformation*);
277 
280  virtual void completeDisembarkationInformationRequest(
282 
285  virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
286 
289  virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&,
290  const DtUUID& parent) const;
291 
294  virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
295 
297  virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
298 
301  virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
302 
305  virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
306 
309  virtual void issueMoveToEgressTask();
310  virtual void issueMoveToIngressTask();
311 
314  virtual void issueMoveAlongToEgressTask();
315  virtual void issueMoveAlongToIngressTask();
316 
319  virtual void issueMoveToEmbarkationPointTask();
320 
322  virtual DtVector currentBodyPosition(const DtUUID& parent) const;
323  virtual DtTaitBryan currentBodyOrientation(const DtUUID& parent) const;
324  virtual DtVector currentBodyVelocity(const DtUUID& parent) const;
325  virtual DtVector currentBodyAcceleration(const DtUUID& parent) const;
326 
327 protected:
337  virtual bool requestEmbarkationInformationFrom(const DtUUID& parent,
338  bool start = false, int embarkInSlot = -1, const DtString& slotName = "*",
339  const DtString& slotType = "*", bool anyIfTaken = true);
340  virtual bool requestDisembarkationInformationFrom(const DtUUID& parent,
341  bool start = false);
342 
344  virtual void requestGiveUpSlot(const DtUUID& parent);
345 
346  virtual void waitingForEmbarkationInformation();
347  virtual void waitingForDisembarkationInformation();
348 
350  virtual void placeObject(bool clamp = false);
351 
353  virtual void setLocation(const DtVector&);
354 
361  virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
362 
364  virtual void sendSetRequest(DtSetDataRequest& request);
365 
366  virtual void processDisembarkationState(const DtVector& bodyExitPosition);
367  virtual void movingToFinalDestination();
368  virtual void moveToFinalDestination();
369 
372  virtual void preprocessEmbarkTask();
373  virtual void preprocessDisembarkTask();
374 
377  virtual bool checkEmbarkOk(const DtUUID& parent) const;
378 
382  virtual void updateDisembarkedAppearanceAndAnimation(int appearance);
383 
388  virtual void updateEmbarkedAppearanceAndAnimation(int, const DtString&);
389  virtual void updateLifeformEmbarkedAppearanceAndAnimation(int, const DtString&);
390 
393  virtual void attachToEmbarkedParent(const DtUUID& newParent);
394 
398  virtual DtVector fallbackOffloadPoint();
399 
401  virtual void enable();
402 
404  virtual void disable();
405 
407  virtual DtIfEmbarkationInformation createEmbarkationInformationFromProcessState() const;
408 
411  virtual bool parentOnGround();
412 
415  static void setHeadingCallback(DtSimMessage*, void* usr);
416  virtual void processSetHeading();
417 
418 private:
419 
422 
425  orig);
426 
428  const DtEmbarkationController & operator=(const
429  DtEmbarkationController & orig);
430 
431 protected:
432  std::list<DtString> myEmbarkedObjects;
433 
439 
443 
449  bool myWaiting;
450 
452 
456 
461 
465 
467 
473 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)