![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtScene.h,v $ $Revision: 1.23 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtScene_H_ 00014 #define DtScene_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtUniqueID.h> 00019 00020 #include <boost/signal.hpp> 00021 00022 #include <string> 00023 #include <vector> 00024 00025 namespace makArchives 00026 { 00027 class DtSceneRecord; 00028 class DtTerrainRecord; 00029 } 00030 00031 namespace makVrv 00032 { 00033 class DtAgentManagerInterface; 00034 class DtDe; 00035 class DtEnvironment; 00036 class DtFeature; 00037 class DtProp; 00038 class DtSceneSignaler; 00039 class DtTerrain; 00040 class DtTerrainLayer; 00041 00044 class DT_DLL_VRVCORE DtScene 00045 { 00046 public: 00047 00049 DtScene(DtDe& de,DtAgentManagerInterface& agentManager); 00050 00052 virtual ~DtScene(); 00053 00055 00056 inline DtTerrain& terrain() { return *myTerrain; } 00057 inline const DtTerrain& terrain() const { return *myTerrain; } 00059 00061 void getRecord(makArchives::DtSceneRecord& record) const; 00062 00064 void setFromRecord(const makArchives::DtSceneRecord& record); 00065 00071 bool saveTerrain( const std::string& filePath, bool saveAs = true ); 00072 00074 bool loadTerrain( const std::string& filePath ); 00075 00077 00078 inline DtEnvironment& environment() { return *myEnvironment; } 00079 inline const DtEnvironment& environment() const { return *myEnvironment; } 00081 00087 bool saveEnvironment( const std::string& filePath, bool saveAs = true ); 00088 00090 bool loadEnvironment( const std::string& filePath ); 00091 00093 virtual void resetScene(); 00094 00096 virtual void resetTerrain(); 00097 00099 00100 00102 typedef std::vector<DtProp*> ScenePropReferences; 00103 00105 virtual void getScenePropReferences(ScenePropReferences& props); 00106 00109 virtual DtProp* findProp(DtElementID id); 00110 00113 virtual bool destroyProp(DtElementID id); 00114 00116 00118 virtual DtFeature* findFeature(DtElementID id); 00119 00122 virtual bool destroyFeature(DtElementID id); 00123 00125 const std::string& terrainFileName() const; 00126 00128 const std::string& enviromentFileName() const; 00129 00130 protected: 00131 00132 void copyPropReferences( DtTerrainLayer* patch, DtScene::ScenePropReferences &spRefs ); 00133 00134 protected: 00135 DtDe& myDe; 00136 00137 DtTerrain* myTerrain; 00138 DtEnvironment* myEnvironment; 00139 DtSceneSignaler& mySignaler; 00140 00141 std::string myTerrainFileName; 00142 std::string myEnviromentFileName; 00143 }; 00144 00147 class DT_DLL_VRVCORE DtSceneSignaler : public DtVirtualBaseClass 00148 { 00149 public: 00150 00152 static DtSceneSignaler& instance(DtDe& de); 00153 00155 virtual ~DtSceneSignaler(); 00156 00158 boost::signal<void ()> signal_sceneCreated; 00159 00161 boost::signal<void (DtScene&)> signal_sceneToBeCleared; 00162 00164 boost::signal<void (DtScene&)> signal_sceneCleared; 00165 00167 boost::signal<void ()> signal_sceneToBeDeleted; 00168 00170 boost::signal<void (const std::string&, const makArchives::DtTerrainRecord&)> signal_terrainAboutToBeSaved; 00171 00173 boost::signal<void (const std::string&, const makArchives::DtTerrainRecord&)> signal_terrainSaved; 00174 00175 protected: 00176 00177 DtSceneSignaler(); 00178 00179 }; 00180 } 00181 00182 #endif 00183