![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 00002 /******************************************************************************* 00003 ** Copyright (c) 2009 MAK Technologies, Inc. 00004 ** All rights reserved. 00005 *******************************************************************************/ 00006 /******************************************************************************* 00007 * Copyright 2009 Autodesk, Inc. All rights reserved. 00008 * Use of this software is subject to the terms of the Autodesk license 00009 * agreement provided at the time of installation or download, or which otherwise 00010 * accompanies this software in either electronic or hard copy form. 00011 *******************************************************************************/ 00012 00013 /******************************************************************************* 00014 ** $RCSfile: bhaveMovementChooserController.h,v $ $Revision: 1.3 $ $State: Exp $ 00015 *******************************************************************************/ 00016 00020 00021 #pragma once 00022 00023 #include <bhaveSim/bhaveSimDefines.h> 00024 #include <vrfmodel/gndMovementChooserController.h> 00025 #include <vrfmodel/railPathPlanner.h> 00026 #include "vrfmodel/railPathMetric.h" 00027 #include <vrfobjcore/railPathControllerPSR.h> 00028 #include "vrfobjcore/boolIOPort.h" 00029 #include <vrfobjparam/pathMoveDesc.h> 00030 #include <bhaveSim/bhaveMovementChooserDescriptor.h> 00031 #include "makSettingsManager/boolSetting.h" 00032 00033 #include "vrfutil/simSettingsObjectTypes.h" 00034 #include "vrfcore/simMgr.h" 00035 #include "vrfcore/vrfSimSettingsManager.h" 00036 00037 class DtPatrolRouteTask; 00038 class DtPatrolTwoPointsTask; 00039 00040 namespace BHAVE 00041 { 00042 class DtVrfEntityBot; 00043 00044 const char DtBhaveMovementChooserControllerType[] = "bhave-movement-chooser-controller"; 00045 00053 class DT_DLL_bhaveSim DtBhaveMovementChooserController : public DtGroundMovementChooserController 00054 { 00055 private: 00056 00058 DtBhaveMovementChooserController(); 00060 DtBhaveMovementChooserController(const DtBhaveMovementChooserController& orig); 00062 DtBhaveMovementChooserController& operator=(const DtBhaveMovementChooserController& orig); 00063 00064 public: 00065 00068 DtBhaveMovementChooserController(const DtString& name, DtVrfObject* owner, 00069 DtSimManager* simManager, DtComponentDescriptor* desc = NULL, 00070 DtReaderWriterRegistry* parentRegistry = NULL); 00071 00072 virtual ~DtBhaveMovementChooserController(); 00073 00079 virtual bool createPSR(); 00080 00082 virtual void registerTaskMsgCallbacks(); 00083 00085 virtual bool init(); 00086 00089 virtual void initPathPlanner(); 00090 00094 virtual void tick(); 00095 00096 virtual void processSwitchSystemResponse(DtSimMessage* msg); 00097 00098 protected: 00099 00101 virtual void processTaskCompleteReport(DtSimMessage* msg); 00102 00105 virtual void processMovementTask(DtFollowEntityTask* taskMsg, int taskId); 00106 virtual void processMovementTask(DtMoveAlongTask* taskMsg, int taskId); 00107 virtual void processMovementTask(DtMoveToLocationTask* taskMsg, int taskId); 00108 virtual void processMovementTask(DtMoveToTask* taskMsg, int taskId); 00109 virtual void processMovementTask(DtPatrolRouteTask* taskMsg, int taskId); 00110 virtual void processMovementTask(DtPatrolTwoPointsTask* taskMsg, int taskId); 00111 virtual void processMovementTask(DtPlanAndMoveToTask* taskMsg, int taskId); 00112 virtual void processMovementTask(DtPlanAndMoveToLocationTask* taskMsg, int taskId); 00113 00116 virtual bool attachToVRFRailMovement(DtVrfEntityBot* kynapseTarget, int currentSubtaskId, int currentTaskId); 00117 00119 static void setLocationCallback(DtSimMessage* msg, void* usr); 00120 00125 virtual void processSetLocation(DtSimMessage* msg); 00126 00128 static void settingDrivingSideCallback(const DtSettingsObject* settingsObject, void* usr); 00129 00131 virtual void processDrivingSide(const DtBoolSetting* setting); 00132 00134 virtual void switchToRailMovement(int currentTaskId); 00135 00137 virtual void switchToNormalMovement(int currentTaskId); 00138 00139 public: 00140 00144 static DtSimComponent * creator(const DtString& name, DtVrfObject* owner, 00145 DtSimManager* simManager, DtComponentDescriptor* desc = 0, 00146 DtReaderWriterRegistry* parentRegistry = 0); 00147 00148 virtual bool createPorts(); 00149 00150 protected: 00151 00152 DtRailPathPlanner* myPathPlanner; 00153 DtRailPathMetric* myPathMetric; 00154 bool myUsingRails; 00155 DtBooleanInputPort* myDisableMovementChooserPort; 00156 bool myDrivingOnLeftEnabled; 00157 bool myIgnoreRoadDriving; 00158 00159 00162 DtRailPathControllerPSR* myRailProcessState; 00163 00164 const DtBhaveMovementChooserControllerDescriptor* myPathDescriptor; 00165 }; 00166 00167 } //namespace BHAVE 00168