![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 00002 /******************************************************************************* 00003 ** Copyright (c) 2009 MAK Technologies, Inc. 00004 ** All rights reserved. 00005 *******************************************************************************/ 00006 00007 #pragma once 00008 00009 #include <vrfobjcore/singleTaskControllerComponent.h> 00010 #include <vrftasks/userTask.h> 00011 #include <vrfobjcore/entityTargetInformation.h> 00012 00013 #include <bhaveSim/bhaveSimDefines.h> 00014 #include <kyruntime.h> 00015 00016 #define KYCRTL_PUBLISH_ROUTE_REFRESH_RATE 10 //debug route will be checked every 10 ticks 00017 00018 class DtAnalogOutputPort; 00019 class DtBooleanOutputPort; 00020 class DtConstrainedIntegerOutputPort; 00021 class DtConstrainedAnalogOutputPort; 00022 class DtOutputPortGroup; 00023 class DtGroundVehicleStateRepository; 00024 class DtScenario; 00025 class DtAnalogOutputPort; 00026 class DtAnalogOutputPort; 00027 class DtOutputPortGroup; 00028 class DtSensorContactListInputPort; 00029 class DtSensorContactInfoList; 00030 class DtVrfObjectMessage; 00031 00032 00033 namespace BHAVE 00034 { 00035 class KynapseDescriptor; 00036 class DtKynapsePSR; 00037 class DtVrfEntityBot; 00038 00040 const char DtKynapseControllerType[] = "kynapse-controller"; 00041 00043 static void setLocationRequestCallack(DtSimMessage * msg, void * usrData); 00044 00050 class DT_DLL_bhaveSim DtKynapseController : public DtSingleTaskControllerComponent 00051 { 00052 public: 00053 00055 DtKynapseController(const DtString & name, DtVrfObject* owner, 00056 DtSimManager * simManager, DtComponentDescriptor* desc = NULL, 00057 DtReaderWriterRegistry * parentRegistry = 0); 00058 00060 virtual ~DtKynapseController(); 00061 00063 DtKynapseController(const DtKynapseController& orig); 00064 00066 DtKynapseController& operator=(const DtKynapseController& orig); 00067 00069 virtual bool init(); 00070 00072 virtual DtString type() const; 00073 00075 virtual void setComponentDescriptor(DtComponentDescriptor* descriptor); 00076 00078 static DtSimComponent* creator(const DtString& name, 00079 DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc, 00080 DtReaderWriterRegistry* parentRegistry); 00081 00083 00085 virtual void registerTaskMsgCallbacks(); 00087 00089 virtual void unregisterTaskMsgCallbacks(); 00090 00094 static void userTaskCallback(DtSimMessage * msg, void * usr); 00095 00100 virtual void processUserTask(); 00101 00103 DtVrfEntityBot* kynapseEntity(); 00104 00106 const DtSensorContactInfoList& getSensorContacts(); 00107 00108 00111 static void setBhaveMovementModeCallback(DtSimMessage* msg, void* usr); 00112 00115 virtual DtBoolean checkTick(); 00116 00118 virtual void NotifyTaskCompleted(bool success = true); 00119 00121 virtual void clearTask(); 00122 00124 virtual void tick(); 00125 00127 virtual void firstTick(); 00128 00130 virtual void processSetBhaveMovementMode(DtSimMessage* msg); 00131 00133 void drawDebugRoutes(); 00134 00135 protected: 00136 00138 virtual DtBoolean createPorts(); 00139 virtual DtBoolean createPortGroups(); 00140 00141 virtual bool createKynapsePSR(); 00142 00143 static void aboutToSaveCheckpointCallback(DtScenario& scn, void* usr); 00146 virtual void processAboutToSaveCheckpoint(); 00147 00148 static void postLoadCheckpointCallback(const DtScenario& scn, void* usr); 00149 static void postRewindCallback(void* usr); 00152 virtual void processPostLoadCheckpoint(); 00153 00154 static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr); 00155 virtual void processObjectAboutToBeRemoved(DtVrfObject* object); 00156 00158 static void objectDestroyedCallback(DtVrfObject* obj, DtVrfObjectPredicateEvaluator* eval, void* usr); 00159 virtual void processObjectDestroyed(DtVrfObject* obj); 00160 00164 virtual bool updateDebugRoute(); 00165 00166 00168 virtual void clearDebugRoute(); 00169 00171 virtual void setBhaveMovementMode(const DtString & movementMode); 00172 00175 virtual bool IsExecutingBHAVETask(); 00176 00180 virtual DtBoolean applyKynapseRecommendations(); 00181 00183 virtual DtBoolean deactivateOutputControl() {return false;}; 00184 00185 protected: 00186 00188 DtKynapsePSR* myKynapsePSR; 00189 00190 bool myFirstTick; 00191 00193 const KynapseDescriptor* myKynapseDescriptor; 00194 00196 DtVrfEntityBot* myKynapseEntity; 00197 00198 bool pathFindingAccidentAlreadyReported; 00199 DtUserTask *myUserTask; 00200 00201 struct VRFDebugInfo { 00202 int skipUpdateTickCount; 00203 bool draw; 00205 bool needsRedraw; 00207 std::list<DtVector> localVRFPath; 00208 } debugView; 00209 }; 00210 00211 } //namespace BHAVE 00212 00213