VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
featureContext.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <features/featureSet.h>
15 #include <features/feature.h>
16 #include <features/pathFeature.h>
17 #include <features/aStarGraph.h>
18 #include <features/areaFeature.h>
20 
23 
24 #include <boost/scoped_ptr.hpp>
25 #include <boost/ptr_container/ptr_map.hpp>
26 
27 #include <tbb/mutex.h>
28 
29 #include <map>
30 #include <string>
31 
32 class DtVectorNetwork;
33 
34 namespace osg
35 {
36  template<typename T>
37  class ref_ptr;
38 }
39 
40 namespace osgEarth
41 {
42  class Map;
43 }
44 
45 namespace MAKVRinTerra
46 {
47  class DtFeatureContext;
48  class DtFeaturesDebugger;
49  class DtUnusedFeatureTileTracker;
50 
52  {
53  public:
55  typedef boost::function<DtFeatureSet* (std::string)> FeatureSetCreatorFcn;
56 
59 
62 
64  virtual ~DtFeatureDatabase();
65 
67  virtual bool init(const DtTerrainInterfaceConfig&);
68 
73  static void AddFeatureSetCreator(std::string extension, FeatureSetCreatorFcn factory);
74 
77  static DtFeatureSet* CreateFeatureSetFromFile(std::string file);
78 
83  static DtFeatureSet* ConfigureAttribute(
84  DtFeatureSet* set, std::string attribute, std::string value);
85 
86  static std::auto_ptr<DtFeatureSet> ConfigureAttribute(
87  std::auto_ptr<DtFeatureSet> set, std::string attribute, std::string value);
88 
89  static DtFeatureSet* ConfigureAttributes(
90  DtFeatureSet*,
92  DtAttributeConfigParser& parser);
93 
98  virtual bool loadSrcSpecConfigFor(std::string sourceFile, std::string attribute);
99 
107  virtual bool loadConfig(std::string configFile, DtQuery schema);
108 
113  virtual std::auto_ptr<DtFeatureSet> addFeatureSource(std::string file, bool page=true);
114 
120  virtual std::auto_ptr<DtFeatureSet> addFeatureSource(
122  std::string earthfile=std::string(), bool page=true);
123 
128  virtual std::auto_ptr<DtFeatureSet> addFeatureSource(DtFeatureSet* fs, bool page=true);
129 
133  virtual void addFeatureSource(boost::shared_ptr<DtFeatureSet> fs, bool page=true);
134 
139  virtual std::auto_ptr<DtFeatureSet> addFeatureSource(
140  DtFeatureSet* fs,
141  const DtTerrainInterfaceConfig& config);
142 
146  virtual void addFeatureSource(
147  boost::shared_ptr<DtFeatureSet> fs,
148  const DtTerrainInterfaceConfig& config);
149 
154  virtual std::auto_ptr<DtFeatureSet> addVectorNetworkFeatureSource(
155  DtVectorNetwork* network, std::string sourceFile);
156 
163  virtual std::auto_ptr<DtFeatureSet> addFeatureSource(
164  DtFeatureSet* fs, std::string source, bool page=true);
165 
168  void addToDebugger(DtFeatureSet* fs);
169 
171  const DtTerrainInterfaceConfig& config() const;
172 
174  boost::shared_ptr<DtAttributeConfigParser> parser() const;
175 
177  boost::shared_ptr<DtUnusedFeatureTileTracker> tracker() const;
178 
180  boost::shared_ptr<DtFeaturesDebugger> debugger() const;
181 
183  boost::shared_ptr<LoadingQueue> loadingQueue() const;
184 
187  virtual DtFeatureSet* makeSourcePagetables(const DtProj& proj);
188 
191  virtual std::auto_ptr<DtFeatureSet> features(const std::string& queryName) const;
192 
194  virtual std::auto_ptr<DtFeatureSet> allFeatures() const;
195 
196  private:
200  struct Record
201  {
202  typedef boost::shared_ptr<Record> Ptr;
203  typedef std::vector<Ptr> Vector;
204 
205  std::auto_ptr<DtFeatureSet> featureSet;
207 
209  };
210 
212 
213  boost::shared_ptr<DtFeaturesDebugger> myDebugger;
214  boost::shared_ptr<DtAttributeConfigParser> myParser;
215  boost::shared_ptr<DtUnusedFeatureTileTracker> myUnusedTracker;
216 
219 
220  boost::shared_ptr<LoadingQueue> myLoadingQueue;
221  };
222 
224  {
225  public:
226  static DtFeatureContext* Create(DtFeatureDatabase& db, const DtProj& proj);
227 
231  DtFeatureContext(DtFeatureDatabase& loader, const DtProj& proj);
232 
234  ~DtFeatureContext();
235 
237  void shutdown(bool block = true);
238 
241  std::auto_ptr<DtFeatureSet> features(const std::string& queryName) const;
242 
244  std::auto_ptr<DtFeatureSet> allFeatures() const;
245 
248  std::auto_ptr<DtAreaFeatureSet> areas(
249  const std::string& type,
250  const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>());
251 
254 
257  std::auto_ptr<DtAreaFeatureSet> areas(
258  const AreaConfig& cfg,
259  const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>());
260 
262  std::auto_ptr<DtPathFeatureSet> paths(std::string type);
263 
265  DtAStarGraph::Ptr pathFinder(std::string type);
266 
268  DtProj::CPtr projection() const;
269 
273  void cleanUpPathFinders();
274 
275  private:
278 
281 
283  boost::scoped_ptr<DtFeatureSet> mySourceFeatures;
284 
286  typedef boost::ptr_map<const std::string, DtFeatureSet> FeatureSetMap;
289  mutable tbb::mutex myFeatureSetMutex;
290  boost::shared_ptr<FeatureQueue> myFeatureLoadingQueue;
291 
293  typedef boost::ptr_map<const AreaConfig, DtAreaFeatureSet> AreaFeatureSetMap;
296  mutable tbb::mutex myAreasMutex;
297  boost::shared_ptr<AreaQueue> myAreaLoadingQueue;
298 
300  typedef boost::ptr_map<const std::string, DtAStarGraph::Ptr> PathFinderMap;
302  mutable tbb::mutex myPathFindersMutex;
303 
305  boost::shared_ptr<DtFeaturesDebugger> myDebugger;
306 
308  boost::shared_ptr<DtAttributeConfigParser> myAttributeParser;
309 
312  };
313 }
Represents a set of DtFeature objects or others which conform to the DtFeature concept.
Definition: featureSet.h:101
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:41
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:32
std::vector< Ptr > Vector
Definition: featureContext.h:203
DtQueueLoadingFeatureSet< DtFeatureSet >::Queue LoadingQueue
Async queue for loading feature sets.
Definition: featureContext.h:58
DtUnusedFeatureTileTracker::Ptr myUnusedTracker
Unused tile tracker.
Definition: featureContext.h:311
Each record represents one feature set and all the info needed to load it. We need to collect all the...
Definition: featureContext.h:200
Definition: featureContext.h:37
DtFeatureSet::List myFeatures
Definition: featureContext.h:218
std::auto_ptr< DtFeatureSet > featureSet
Definition: featureContext.h:205
boost::shared_ptr< FeatureQueue > myFeatureLoadingQueue
Definition: featureContext.h:290
boost::shared_ptr< DtAStarGraph > Ptr
Definition: aStarGraph.h:89
boost::ptr_map< const AreaConfig, DtAreaFeatureSet > AreaFeatureSetMap
Area stuff.
Definition: featureContext.h:293
boost::scoped_ptr< DtFeatureSet > mySourceFeatures
Reads from set of per-source page tables.
Definition: featureContext.h:283
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
boost::ptr_map< const std::string, DtFeatureSet > FeatureSetMap
Plain features.
Definition: featureContext.h:286
boost::shared_ptr< DtUnusedFeatureTileTracker > myUnusedTracker
Definition: featureContext.h:215
tbb::mutex myPathFindersMutex
Definition: featureContext.h:302
DtProj::CPtr myProjection
Local projection.
Definition: featureContext.h:277
DtTerrainInterfaceConfig config
Definition: featureContext.h:206
DtTerrainInterfaceConfig myTerrainInterfaceConfig
Terrain interface config object.
Definition: featureContext.h:280
boost::shared_ptr< LoadingQueue > myLoadingQueue
Definition: featureContext.h:220
boost::shared_ptr< DtUnusedFeatureTileTracker > Ptr
Definition: unusedFeatureTileTracker.h:52
DtQueueLoadingFeatureSet< DtFeatureSet >::Queue FeatureQueue
Definition: featureContext.h:287
boost::shared_ptr< AreaQueue > myAreaLoadingQueue
Definition: featureContext.h:297
Feature system config file.
FeatureSetMap myFeatureSets
Definition: featureContext.h:288
Represents some coordinate system. The terms &quot;coordinate system&quot;, &quot;projection&quot;, &quot;spatial reference&quot;...
Definition: proj.h:44
Represents a set of characeters a DtFeature object can have. DtQuery objects are the way to communica...
Definition: query.h:38
boost::ptr_map< const std::string, DtAStarGraph::Ptr > PathFinderMap
Path finder for path planning.
Definition: featureContext.h:300
boost::shared_ptr< DtAttributeConfigParser > myParser
Definition: featureContext.h:214
boost::shared_ptr< DtAttributeConfigParser > myAttributeParser
Feature config parser.
Definition: featureContext.h:308
boost::shared_ptr< const DtProj > CPtr
Definition: proj.h:48
Definition: featureContext.h:51
const char * source
Definition: lz4.h:442
PathFinderMap myPathFinders
Definition: featureContext.h:301
boost::shared_ptr< DtFeaturesDebugger > myDebugger
Top level feature debugger.
Definition: featureContext.h:305
Parser for feature system configuration file. Constructs a set of DtQuery objects, each with a name from the configuration file. Also constructs a list of DtFeatureTransform objects, using DtQuery names as filters.
Definition: attributeConfigParser.h:78
Class DtLogFileInfo; Holds Logging information for windows minidump and log file generation.
DtTerrainInterfaceConfig myTerrainInterfaceConfig
Definition: featureContext.h:211
AreaFeatureSetMap myAreaFeatureSets
Definition: featureContext.h:295
tbb::mutex myFeatureSetMutex
Definition: featureContext.h:289
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
tbb::mutex myAreasMutex
Definition: featureContext.h:296
boost::function< DtFeatureSet *(std::string)> FeatureSetCreatorFcn
Factory function for creating feature sets.
Definition: featureContext.h:55
Record::Vector myRecords
Definition: featureContext.h:217
boost::shared_ptr< Record > Ptr
Definition: featureContext.h:202
DtQueueLoadingFeatureSet< DtAreaFeatureSet >::Queue AreaQueue
Definition: featureContext.h:294
boost::shared_ptr< DtFeaturesDebugger > myDebugger
Definition: featureContext.h:213
DtAreaFeatureSetAdapter::Config AreaConfig
Configuration information for areas.
Definition: featureContext.h:253
DtFeatureSet used to combine multiple feature sets into one. This class allows all feature set algori...
Definition: featureSetList.h:26
Definition: featureContext.h:223
Configuration object for processing areas.
Definition: areaFeature.h:47
std::vector< DtFeatureTransform > TransformVector
Sequence of transforms.
Definition: attributeConfigParser.h:89
Definition: vectorNetwork.h:37

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)