VR-Forces 4.1.1 Class Documentation
DtTerrain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2008 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: DtTerrain.h,v $ $Revision: 1.55 $ $State: Exp $
7 ******************************************************************************/
8 
12 
13 #ifndef DtTerrain_H_
14 #define DtTerrain_H_
15 
16 #include <vrvCore/vrvCore.h>
18 #include <vrvCore/DtForest.h>
21 
23 
24 #include <boost/signal.hpp>
25 #include <boost/shared_ptr.hpp>
26 
27 #include <string>
28 #include <map>
29 #include <list>
30 #include <vector>
31 
32 namespace makArchives
33 {
34  class DtTerrainRecord;
35  class DtFeatureLayerRecord;
36  class DtTerrainPatchRecord;
37 }
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtFeature;
43  class DtFeatureLayer;
44  class DtModelAgent;
45  class DtProp;
46  class DtTerrainPatch;
47  class DtTerrainPatchObjectAgent;
48  class DtTerrainSignaler;
49 
53  {
54 
55  public:
56 
57  typedef std::list<DtTerrainPatch*> TerrainPatches;
58  typedef std::list<DtFeatureLayer*> FeatureLayers;
59 
61  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
62 
64  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
65 
67  ~DtTerrain();
68 
70  virtual void clear();
71 
73 
74 
78  bool globalScaleTerrain() const;
79 
83  void updateGlobalScaleTerrain();
84 
86  virtual void getRecord(makArchives::DtTerrainRecord& rec);
87 
89  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
90 
92 
94 
95 
100  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
101 
106  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
107 
109  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
110 
112  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
113 
116  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
117 
120  const TerrainPatches& terrainPatches() const ;
121 
124  TerrainPatches& terrainPatches();
125 
127 
128 
130 
131  virtual const TerrainOperationsMap& terrainOperationsMap() const;
133 
135 
136 
137 
140  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
143 
148  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
151 
153  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
154 
156  virtual const FeatureLayers& featureLayers() const;
157 
159  virtual FeatureLayers& featureLayers();
160 
162  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
163 
165 
167 
168 
170  std::string generatePropName(const std::string& propType);
171 
173 
175 
176 
180  virtual DtForest& forest();
181 
183 
184  bool isPropNameUsed(const std::string& propName) const;
185 
189  virtual bool getTerrainIntersection(double x, double y, double z,
190  double upX, double upY, double upZ, double& retX, double& retY,
191  double& retZ );
192 
196  virtual void clearElevationCache();
198 
200 
201 
204  virtual bool exportTerrainAndProps(const std::string&);
205 
207 
208  protected:
209 
211  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
212  const makArchives::DtTerrainRecord& terrainRec);
213 
215  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
216 
218  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
219 
221  void removeTerrainOperationRecord(int id);
222 
224  void clearTerrainOperations();
225 
226  protected:
227  typedef std::map<std::string,int> PropNameMap;
228 
232 
236 
240 
242 
243  };
244 
248  {
249  public:
250 
252  static DtTerrainSignaler& instance(DtDe& de);
253 
255  virtual ~DtTerrainSignaler();
256 
257  //@name Signals
259 
261  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
262 
264  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
265 
267  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
268 
270  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
271 
273  boost::signal<void () > signal_terrainToBeCleared;
274 
276  boost::signal< void () > signal_terrainCleared;
277 
279  boost::signal< void (const std::string&, const std::string&) > signal_propExtractionRuleLoaded;
280 
282  boost::signal< void (DtProp& prop) > signal_propCreated;
283 
285  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
286 
288  boost::signal< void (const DtProp& prop, double x, double y, double z) > signal_propPositionAboutToChange;
289 
291  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
292 
294  boost::signal< void (const DtFeature&) > signal_featureAdded;
295 
297  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
298 
300  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
301 
303  boost::signal< void(int id) > signal_terrainOperationRemoved;
304 
306  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
307 
310  boost::signal< void() > signal_terrainGeometryLoaded;
311 
313 
314  protected:
316  };
317 }
318 
319 #endif
320 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)