VR-Forces 4.0.4 Class Documentation
include/vrfmodel/embarkationController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: embarkationController.h,v $ $Revision: 1.34 $ $State: Exp $
00007 *******************************************************************************/
00008 
00009 #ifndef DtEmbarkationController_H_
00010 #define DtEmbarkationController_H_
00011 
00012 #include "vrfobjcore/singleTaskControllerComponent.h"
00013 #include "vrfobjcore/embarkationPSR.h"
00014 
00017 
00021 
00022 
00023 class DtString;
00024 class DtSimManager;
00025 class DtTaskMessage;
00026 class DtEmbarkationDescriptor;
00027 class DtIfEmbarkationInformation;
00028 class DtSetDataRequest;
00029 
00030 #include <list>
00031 
00042 #include "vrfmodel/vrfmodelDefines.h"
00043 class DT_DLL_vrfmodel DtEmbarkationController : public DtSingleTaskControllerComponent
00044 {
00045 public:
00046 
00049    DtEmbarkationController(const DtString& name, 
00050       DtVrfObject* owner,
00051       DtSimManager* simManager, 
00052       DtComponentDescriptor* desc = 0,
00053       DtReaderWriterRegistry* parentRegistry = 0);
00054 
00056    virtual ~DtEmbarkationController();
00057 
00059    virtual bool init();
00060 
00063    virtual DtString type() const;
00064 
00068    static DtSimComponent * creator(const DtString& name, 
00069       DtVrfObject* owner,
00070       DtSimManager* simManager, 
00071       DtComponentDescriptor* desc = 0,
00072       DtReaderWriterRegistry* parentRegistry = 0);
00073 
00074 protected:
00076    virtual void registerTaskMsgCallbacks();
00077 
00079    virtual void tick();
00080 
00082    virtual void clearCurrentTaskMessage();
00083 
00085    virtual void clearTask();
00086 
00088 protected:
00090    virtual void processDisembarkTask(DtSimMessage* msg);
00091    static void disembarkTaskCallback(DtSimMessage* msg, void* usr);
00092 
00098    virtual void processEmbarkTask(DtSimMessage* msg);
00099    static void embarkTaskCallback(DtSimMessage* msg, void* usr);
00100 
00103    static void embarkObjectCallback(DtSimMessage* msg, void* usr);
00104    virtual void processEmbarkObjectCallback(DtSimMessage* msg);
00105 
00106    static void disembarkObjectCallback(DtSimMessage* msg, void* usr);
00107    virtual void processDisembarkObjectCallback(DtSimMessage* msg);
00108 
00112    static void embarkationInformationCallback(DtSimMessage* msg, void* usr);
00113    virtual void processEmbarkationInformationCallback(DtSimMessage* msg);
00114 
00115 protected:
00117    virtual void processLoadEntity(DtSimMessage * msg);
00118    virtual void processUnloadEntity(DtSimMessage * msg);
00119 
00120    static void setLoadEntityCallback(DtSimMessage * msg, void * usrData);
00121    static void setUnloadEntityCallback(DtSimMessage * msg, void * usrData);
00122 
00124    virtual void unload(const DtVector& point);
00125 
00128    static void deleteVrfObjectCallback(DtVrfObject * msg, void * usr);
00129    virtual void processDeleteVrfObjectCallback(DtVrfObject* obj);
00130 
00134    static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
00135    virtual void processTaskComplete(DtSimMessage * msg);
00136 
00137 protected:
00138 
00141    virtual void moveToEgress();
00142 
00144    virtual void movingToEgress();
00145 
00147    virtual void disembark();
00148 
00150    virtual void sendTask(const DtSimTask& task, const DtString& toName);
00151 
00153    virtual void removeControlPoint();
00154 
00158    virtual void moveToIngress(const DtString& parentName);
00159 
00160    virtual void createControlPoint(const DtVector& location,
00161       const DtString& parent);
00162 
00163    virtual void createRoute(const std::vector<DtVector>&, 
00164       const DtString& parent);
00165 
00168    virtual void moveToEmbarkationPoint();
00169 
00174    virtual void atEmbarkationPoint();
00175 
00177    virtual void waitingToStop();
00178 
00182    virtual void movingToIngress();
00183 
00185    virtual void embarkObject(bool overridePosition, 
00186       const DtVector& loadPosition, 
00187       const DtString& parentName, int appearance = 0xFFFFFFFF, 
00188       const DtTaitBryan& orientation = DtTaitBryan(),
00189       const DtVector& acceleration = DtVector(), 
00190       const DtVector& velocty = DtVector());
00191    
00193    virtual void unloadObject(const DtVector& unloadPoint);
00194 
00196    virtual void embark(const DtVector& loadPosition, const DtString& parentName, 
00197       int appearance = 0xFFFFFFFF, const DtTaitBryan& orientation = DtTaitBryan(),
00198       const DtVector& acceleration = DtVector(), 
00199       const DtVector& velocty = DtVector());
00200 
00203    virtual void movingToEmbarkationPoint();
00204 
00206    virtual void stoppedAtEmbarkedPoint();
00207 
00209    virtual void setState(DtVrfEmbarkationPSR::DtEmbarkationControllerState);
00210    virtual DtVrfEmbarkationPSR::DtEmbarkationControllerState state() const;
00211 
00217    virtual bool createPSR();
00218 
00221    virtual void setupExistingConditions();
00222 
00225    virtual void completeEmbarkationInformationRequest(
00226       const DtIfEmbarkationInformation*);
00227 
00230    virtual void embarkationRefused(const DtIfEmbarkationInformation*);
00231 
00234    virtual void completeDisembarkationInformationRequest(
00235       const DtIfEmbarkationInformation*);
00236 
00239    virtual void disembarkationRefused(const DtIfEmbarkationInformation*);
00240 
00243    virtual DtTaitBryan embarkedOrientation(const DtTaitBryan&, 
00244       const DtString& parent) const;
00245 
00248    virtual void moveToIngressPoint(const DtIfEmbarkationInformation* info);
00249 
00251    virtual void moveAlongToIngressPoint(const DtIfEmbarkationInformation* info);
00252 
00255    virtual void moveToEgressPoint(const DtIfEmbarkationInformation* info);
00256 
00259    virtual void moveAlongToEgressPoint(const DtIfEmbarkationInformation* info);
00260 
00263    virtual void issueMoveToEgressTask();
00264    virtual void issueMoveToIngressTask();
00265 
00268    virtual void issueMoveAlongToEgressTask();
00269    virtual void issueMoveAlongToIngressTask();
00270 
00273    virtual void issueMoveToEmbarkationPointTask();
00274 
00276    virtual DtVector currentBodyPosition(const DtString& parent) const;
00277    virtual DtTaitBryan currentBodyOrientation(const DtString& parent) const;
00278    virtual DtVector currentBodyVelocity(const DtString& parent) const;
00279    virtual DtVector currentBodyAcceleration(const DtString& parent) const;
00280 
00281 protected:
00291    virtual bool requestEmbarkationInformationFrom(const DtString& parent,
00292       bool start = false);
00293    virtual bool requestDisembarkationInformationFrom(const DtString& parent,
00294       bool start = false);
00295 
00297    virtual void requestGiveUpSlot(const DtString& parent);
00298 
00299    virtual void waitingForEmbarkationInformation();
00300    virtual void waitingForDisembarkationInformation();
00301 
00303    virtual void placeObject();
00304 
00306    virtual void setLocation(const DtVector&);
00307 
00314    virtual void calculateAndSetHeading(const DtVector& start, const DtVector& end);
00315 
00317    virtual void sendSetRequest(DtSetDataRequest& request);
00318 
00319    virtual void processDisembarkationState(const DtVector& bodyExitPosition);
00320    virtual void movingToFinalDestination();
00321    virtual void moveToFinalDestination();
00322 
00325    virtual void preprocessEmbarkTask();
00326    virtual void preprocessDisembarkTask();
00327 
00330    virtual bool checkEmbarkOk(const DtString& parent) const;
00331 
00334    virtual void updateDisembarkedAppearance();
00335 
00339    virtual void updateEmbarkedAppearance(int);
00340    virtual void updateLifeformEmbarkedAppearance(int);
00341 
00344    virtual void attachToEmbarkedParent(const DtString& newParent);
00345 
00349    virtual DtVector fallbackOffloadPoint();
00350 
00353    virtual void addSetDataCallbacks();
00354 
00357    void removeSetDataCallbacks();
00358 
00361    virtual void addMessageCallbacks();
00362 
00365    void removeMessageCallbacks();
00366 
00368    virtual void enable();
00369 
00371    virtual void disable();
00372 
00373 private:
00374    
00376    DtEmbarkationController();
00377 
00379    DtEmbarkationController(const DtEmbarkationController & 
00380       orig);
00381 
00383    const DtEmbarkationController & operator=(const 
00384       DtEmbarkationController & orig);
00385 
00386 protected:
00387    std::list<DtString>  myEmbarkedObjects;
00388 
00393    DtVrfObject*   myControlPoint;
00394 
00397    DtVrfEmbarkationPSR* myProcessState;
00398 
00399    bool  myFirstTick;
00400 
00406    bool myWaiting;
00407 
00408    DtEmbarkationDescriptor*  myEmbarkationDescriptor;
00409 
00410    double myRequestTime;
00411    int    myRequestRetries;
00412 };
00413 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)