VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
spatialVrfObjectManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
11 #include <vlutil/vlConfig.h>
14 #include <list>
15 #include <vector>
16 #include <boost/unordered_set.hpp>
17 #include "vrfobjcore/octree.h"
18 #include "vrfobjcore/vrfObject.h"
19 
28 
31 
32 
33 
35 {
36 public:
39 
41  virtual bool operator()(const DtVrfObject *object) = 0;
42 };
43 
45 
47 {
48 public:
50 
52  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects) = 0;
53 
57  virtual void removeVrfObject(const DtVrfObject * vrfObject) = 0;
58 
62  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
63  unsigned int zRes) = 0;
64 
67  virtual void clearVrfObjects() = 0;
68 
79  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects) = 0;
80 
81 
84 
95 
96  typedef boost::unordered_set<const DtVrfObject*> DtVrfObjectUniqueContainer;
97  typedef boost::unordered_set<const DtVrfObject*> DtVrfConstObjectUniqueContainer;
98 
99  typedef std::list<const DtVrfObject*> DtVrfObjectContainer;
100 
101  virtual bool getVrfObjects(const DtExtent& extent,
102  DtVrfConstObjectUniqueContainer& objects) const = 0;
103 
104  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
105  DtVrfConstObjectUniqueContainer& objects) const = 0;
106 
107  virtual bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const = 0;
108 
109  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
110  std::list<const DtVrfObject*>& objects) const = 0;
112 
123 
124  virtual void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const = 0;
125  virtual void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const = 0;
126 };
127 
129 
131 {
132 public:
134  typedef std::vector<const DtVrfObject*> DtNonSpatialContainer;
135  typedef DtNonSpatialContainer::iterator DtNonSpatialVrfObjectIter;
136  typedef DtNonSpatialContainer::const_iterator DtNonSpatialVrfObjectConstIter;
137 
138 
142  DtSpatialVrfObjectManager(unsigned int xRes = 1, unsigned int yRes = 1,
143  unsigned int zRes = 1);
144 
146  virtual ~DtSpatialVrfObjectManager();
147 
148 private:
151  DtSpatialVrfObjectManager& operator=(const DtSpatialVrfObjectManager& original);
152 
153 public:
154 
160  virtual bool initialize(const DtManagedObjectListConstPtr& vrfObjects,
161  unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ);
162 
167  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects);
168 
172  virtual void removeVrfObject(const DtVrfObject * vrfObject);
173 
176  virtual void clearVrfObjects();
177 
178  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
179  unsigned int zRes);
180 
182  virtual unsigned int xResolution() const;
184  virtual unsigned int yResolution() const;
186  virtual unsigned int zResolution() const;
187 
189  virtual void resolutions(unsigned int& xRes, unsigned int& yRes,
190  unsigned int& zRes) const;
191 
202  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects);
203 
204 
207 
216 
217  bool getVrfObjects(const DtExtent& extent, DtVrfObjectUniqueContainer& objects);
218  bool getVrfObjects(const DtExtent& extent, DtVrfConstObjectUniqueContainer& objects) const;
219 
220  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
221  DtVrfObjectUniqueContainer& objects);
222  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
223  DtVrfConstObjectUniqueContainer& objects) const;
224 
225  bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const;
226 
227  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
228  std::list<const DtVrfObject*>& objects) const;
230 
241 
242  void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const;
243  void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const;
244 
246  virtual const DtSpatialContainer* spatialContainer() const;
247  virtual DtSpatialContainer* spatialContainer();
248 
250  virtual const DtNonSpatialContainer* nonSpatiallyOrganizedObjects() const;
251  virtual DtNonSpatialContainer* nonSpatiallyOrganizedObjects();
252 
253 protected:
254 
258  virtual bool createSpatialContainer(const DtExtent& extent, unsigned int cellCountX,
259  unsigned int cellCountY, unsigned int cellCountZ);
260 
270  virtual void setExtent(const DtManagedObjectListConstPtr& vrfObjects);
271 
274  virtual void expandExtent(const DtManagedObjectListConstPtr& vrfObjects,
275  DtExtent& expandedExtent) const;
276 
279  bool testInvariant() const;
280 
281 
282 protected:
283 
287 
293 };
294 
296 {
297  return new DtOctree<const DtVrfObject>(extent);
298 }
DtSpatialContainer * myVrfObjectSpatialContainer
Spatial container of DtVrfObjects.
Definition: spatialVrfObjectManager.h:286
virtual void removeVrfObject(const DtVrfObject *vrfObject)=0
Removes vrfObject from the set of vrfObjects we are maintaining.
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
std::vector< const DtVrfObject * > DtNonSpatialContainer
Definition: spatialVrfObjectManager.h:134
Implementation of a spatial object manager based on DtSpatialSubdivision.
Definition: spatialVrfObjectManager.h:130
virtual void visitVrfObjects(const DtExtent &extent, DtSpatialSelectionFunctor &callback) const =0
Functions that call the specified functor for every object intersecting the requested region (whether...
virtual bool getVrfObjects(const DtExtent &extent, DtVrfConstObjectUniqueContainer &objects) const =0
The DtSpatialVrfObjectManager is responsible for maintaining a spatial organization of all specified ...
Definition: spatialVrfObjectManager.h:34
*bool testInvariant() const
virtual ~DtSpatialSelectionFunctor()
Virtual Destructor which does nothing.
Definition: spatialVrfObjectManager.h:38
std::list< const DtVrfObject * > DtVrfObjectContainer
Definition: spatialVrfObjectManager.h:99
virtual void reset(const DtManagedObjectListConstPtr &vrfObjects)=0
Clears out the current subdivision, sets it to have the minimum extent, that contains all of the DtVr...
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
virtual ~DtSpatialVrfObjectManagerInterface()
Definition: spatialVrfObjectManager.h:49
Instances of DtVrfObjectPredicate are used to evaluate a condition, given a DtVrfObject as an argumen...
Definition: vrfObjectPredicate.h:21
boost::unordered_set< const DtVrfObject * > DtVrfConstObjectUniqueContainer
Definition: spatialVrfObjectManager.h:97
virtual bool operator()(const T *object)=0
Abstract function call interface.
Definition: octree.h:149
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtSpatialSubdivision< const DtVrfObject * > DtSpatialContainer
Definition: spatialVrfObjectManager.h:133
static DtOctree< const DtVrfObject > * createOctree(const DtExtent &extent)
Definition: spatialVrfObjectManager.h:295
Abstract interface for a spatial object manager.
Definition: spatialVrfObjectManager.h:46
DtNonSpatialContainer::const_iterator DtNonSpatialVrfObjectConstIter
Definition: spatialVrfObjectManager.h:136
virtual void clearVrfObjects()=0
Clears all managed objects from the manager.
boost::unordered_set< const DtVrfObject * > DtVrfObjectUniqueContainer
Set of functions used to get the relevant DtVrfObjects from the object manager.
Definition: spatialVrfObjectManager.h:96
DtNonSpatialContainer::iterator DtNonSpatialVrfObjectIter
Definition: spatialVrfObjectManager.h:135
virtual bool setResolutions(unsigned int xRes, unsigned int yRes, unsigned int zRes)=0
Deprecated – doesn&#39;t apply to octree manager.
DtBoost::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList.
Definition: managedObjectList.h:31
Definition: spatialSubdivision.h:68
DtNonSpatialContainer myNonSpatiallyOrganizedObjects
Container of objects that fall outside of the spatial subdivision.
Definition: spatialVrfObjectManager.h:292
virtual void addVrfObjects(const DtManagedObjectListConstPtr &vrfObjects)=0
Spatially sorts the vrfObjects associated in the vrfObjects.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)