![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00006 #pragma once 00007 00008 #include <bhaveSim/bhaveSimDefines.h> 00009 00010 #include <map> 00011 #include <list> 00012 #include <vector> 00013 #include <string> 00014 00016 #include <vrfcore/simMgr.h> 00017 #include <vrfobjcore/vrfObjMgr.h> 00018 #include <vrfobjcore/vrfObject.h> 00019 #include <vrfobjcore/vrfObjSR.h> 00020 #include <geometry/point.h> 00021 00022 #include "bhaveMsgs/setBhaveMovementMode.h" 00023 #include "bhaveSim/bhaveFactories.h" 00024 #include "bhaveSim/vrfBodyManager.h" 00025 #include "bhaveSim/kynapseObstacleManager.h" 00026 00027 #include <kyruntime.h> 00028 00029 class DtCgf; 00030 class DtVrfObject; 00031 class DtObjectType; 00032 class DtString; 00033 class DtFilename; 00034 class PathDataMgr; 00035 class DtBhavePluginOptions; 00036 00037 namespace BHAVE 00038 { 00039 class DtKynapseManager; 00040 class DtVrlLogBridge; 00041 class DtDrawingViewerBridge; 00042 class DtVrfCollisionBridge; 00043 00044 00045 #define BHAVE_PARAMS_DIR "../data/parameters/BHAVE" 00046 #define BHAVE_RUNTIME_CONFIG "bhave_conf.xml" 00047 00051 class DT_DLL_bhaveSim DtKynapseManager 00052 { 00053 00054 public: 00058 static DtKynapseManager* instance(); 00059 00061 virtual ~DtKynapseManager(); 00062 00064 virtual bool init(DtCgf* cgf); 00065 00068 virtual void closeKynapseWorld(); 00069 00071 DtBhavePluginOptions* pluginOptions(); 00072 00073 //Accessors 00074 virtual Kaim::World* getKynapseWorld() {return myWorld;} 00075 virtual DtCgf* getCgf() {return myCgf;} 00076 virtual DtBhaveFactories* getFactories() {return DtBhaveFactories::instance();} 00077 00079 virtual double getPathDataHeight(const DtString& pathDataName) const; 00080 00081 protected: 00083 virtual void registerKynapseActuators(); 00084 00086 virtual void registerKynapseControllers(); 00087 00089 static void preLoadTerrainCallback(const DtFilename& filename, void* usr); 00091 virtual void processPreLoadTerrainCallback(const DtFilename& filename); 00093 static void postLoadTerrainCallback(const DtFilename& filename, void* usr); 00095 virtual void processPostLoadTerrainCallback(const DtFilename& filename); 00096 00098 static void simTickCallback(void*); 00099 00101 static void postTickCallback(void*); 00102 00104 virtual void processSimTick(void*); 00105 00107 virtual void processPostTick(void*); 00108 00110 virtual void updateAllKynapsePositions(); 00111 00113 bool PrepareWorld(); 00114 00116 void disableBHAVETasks(DtVrfObject * vrfObject); 00117 00119 Kaim::Bot* getKynBotByVrfObject(DtVrfObject * vrfObject); 00120 00121 00122 private: 00124 DtKynapseManager(); 00125 00128 bool BHAVELicenseCheck(); 00129 00130 protected: 00131 00132 static DtKynapseManager* theKynapseManager; 00133 static Kaim::Engine* theKynapseEngine; 00134 00135 DtBhavePluginOptions* myBhavePluginOptions; 00136 DtCgf* myCgf; 00137 Kaim::World * myWorld; 00138 DtVrlLogBridge * myLogBridge; 00139 DtDrawingViewerBridge * myDrawingBridge; 00140 DtVrfCollisionBridge * myCollisionBridge; 00141 DtKynapseObstacleManager* myObstacleManager; 00142 DtVrfBodyManager* myBodyManager; 00143 00144 std::list<Kaim::PathData*> myPathDataList; 00145 std::list<Kaim::Database*> myPathDatabaseList; 00146 00147 DtFilename myTerrainFilename; 00148 00151 std::map<DtString, double> myPathDataHeights; 00152 00153 00154 int myTickCount; 00155 }; 00156 00157 00158 } //namespace BHAVE