![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: disaggregatedMoveToLocationController.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00015 00016 #ifndef disaggregatedMoveToLocationController_H_ 00017 #define disaggregatedMoveToLocationController_H_ 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include <vector> 00021 00022 class DtSimMessage; 00023 class DtVrfAggregateStateRepository; 00024 class DtAggregateMoveToLocationPSR; 00025 00041 #include "vrfmodel/vrfmodelDefines.h" 00042 class DT_DLL_vrfmodel DtDisaggregatedMoveToLocationController : public DtSingleTaskControllerComponent 00043 { 00044 public: 00045 00046 typedef enum DtSubtaskImplementation 00047 { 00048 DtImplementAsMoveIntoFormation = 0, 00049 DtImplementAsMoveAlongRoute 00050 } DtSubtaskImplementation; 00051 00054 DtDisaggregatedMoveToLocationController(const DtString& name, 00055 DtVrfObject* owner, 00056 DtSimManager* simManager, 00057 DtComponentDescriptor* desc = 0, 00058 DtReaderWriterRegistry* parentRegistry = 0); 00059 00060 virtual ~DtDisaggregatedMoveToLocationController(); 00061 00064 virtual DtString type() const; 00065 00067 virtual bool init(); 00068 00070 virtual void clearTask(); 00071 00074 static void moveToLocationTaskCallback(DtSimMessage * msg, void * usr); 00075 00078 static void taskCompleteReportCallback(DtSimMessage * msg, void * usr); 00079 00083 static DtSimComponent * creator(const DtString& name, 00084 DtVrfObject* owner, 00085 DtSimManager* simManager, 00086 DtComponentDescriptor* desc = 0, 00087 DtReaderWriterRegistry* parentRegistry = 0); 00088 00089 protected: 00090 00093 virtual void registerTaskMsgCallbacks(); 00094 00100 virtual bool createPSR(); 00101 00105 virtual void onMoveToLocationTask(DtSimMessage * msg); 00106 00110 virtual void onTaskComplete(DtSimMessage * msg); 00111 00119 DtSubtaskImplementation chooseSubtaskImplementation( 00120 const DtVector& geocDestination) const; 00121 00128 virtual void moveIntoFormation(const DtVector& geocDestination); 00129 00135 void moveAlongRoute(const DtVector& geocDestination); 00136 00144 virtual bool calcRouteStartingPoint(const DtVector& geocEndPoint, 00145 DtVector& geocStartPoint) const; 00146 00149 virtual DtString generateWorkingRouteName() const; 00150 00153 virtual bool publishFormationRoutes() const; 00154 00155 private: 00156 00158 DtDisaggregatedMoveToLocationController( 00159 const DtDisaggregatedMoveToLocationController& orig); 00160 00162 DtDisaggregatedMoveToLocationController& operator=( 00163 const DtDisaggregatedMoveToLocationController& orig); 00164 00165 protected: 00166 00169 DtVrfAggregateStateRepository* myAggregateStateRepository; 00170 00173 DtAggregateMoveToLocationPSR* myProcessState; 00174 00178 mutable bool myToggleGeneratedName; 00179 }; 00180 00181 #endif