VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
entityTerrainGeometryHandle.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
17 
20 
21 #include <vector>
22 #include <boost/unordered_map.hpp>
23 #include <tbb/spin_rw_mutex.h>
24 
25 class DtPoint;
26 class DtTaitBryan;
27 
31 {
32 public:
36  {
37  public:
38  typedef std::shared_ptr<CollisionObject> Ptr;
39 
41 
42  virtual bool enabled() const override;
43 
44  void incrementEnableCount();
45  void decrementEnableCount();
46 
47  protected:
48  std::atomic<unsigned> myEnableCount;
49  };
50 
52  {
53  public:
54  explicit DynamicFeature(const DtPoint& location, double radius);
55 
56  virtual ~DynamicFeature() override;
57 
58  virtual DtString description() const override;
59 
60  virtual bool matches(const makVrv::DtDynamicTerrainChange&, bool useOriginalGeometry = false) const override;
61  virtual bool matches(const makVrv::DtDynamicTerrainGeometry&, bool useOriginalGeometry = false) const override;
62 
63  virtual const makVrv::DtDynamicTerrainGeometry* geometry() const override;
64  virtual const makVrv::DtDynamicTerrainGeometry* originalGeometry() const override;
65 
66  virtual bool isInDefaultState() const override;
67  virtual bool lastStateWasDefaultState() const override;
68  virtual void changeState(const makVrv::DtDynamicTerrainChanges& history) override;
69  virtual void iterateCommands(const boost::function<void(const makVrv::DtDynamicTerrainChange&)>&) const override;
70 
71  void setToDefaultState();
72 
73  makVrv::DtDynamicTerrainChange* createChange() const;
74 
75  protected:
78 
79  std::atomic<bool> myDefaultStateFlag;
80  };
81 
82  typedef std::vector<CollisionObject::Ptr> CollisionObjectVector;
83  typedef boost::unordered_map<DtAppearance, CollisionObjectVector> AppearanceMap;
84 
86  explicit DtEntityTerrainGeometryHandle(DtVantageTerrainEngine& engine, const DtFilename& model);
87 
89  virtual ~DtEntityTerrainGeometryHandle() override;
90 
92  bool isValid() const;
93 
95 
96  virtual bool isDisabled() const override;
97  virtual void disable() override;
98  virtual void setAppearance(DtAppearance app) override;
99  virtual void setPosition(const DtPoint& location, const DtDcm& orientation) override;
101 
102  virtual DtVector position() const override;
103  virtual DtDcm orientation() const override;
104 
105 protected:
107  virtual CollisionObjectVector& loadAppearance(DtAppearance flags);
108 
109  virtual void setupDynamicFeature(const DtPoint& location, double radius);
110  void destroyDynamicFeature();
111 
112  mutable tbb::spin_rw_mutex myMutex;
113 
115  const DtFilename myFile;
116 
117  boost::optional<DtAppearance> myCurrentAppearance;
118  boost::optional<DtPoint> myCurrentLocation;
119  boost::optional<DtDcm> myCurrentOrientation;
120 
121  std::shared_ptr<DynamicFeature> myFeature;
124 
126 };
tbb::spin_rw_mutex myMutex
Definition: entityTerrainGeometryHandle.h:112
std::shared_ptr< DynamicFeature > myFeature
Definition: entityTerrainGeometryHandle.h:121
Definition: DtDynamicTerrainFeature.h:316
DtVantageTerrainEngine & myVantageTerrainEngine
Definition: entityTerrainGeometryHandle.h:114
Bullet collision object which defaults to being disabled and is enabled when the enable count is non-...
Definition: entityTerrainGeometryHandle.h:35
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
boost::unordered_map< DtAppearance, CollisionObjectVector > AppearanceMap
Definition: entityTerrainGeometryHandle.h:83
std::atomic< bool > myDefaultStateFlag
Definition: entityTerrainGeometryHandle.h:79
Allows manipulating a terrain object. Returned by functions which create terrain objects.
Definition: terrainImplementation.h:215
Definition: entityTerrainGeometryHandle.h:51
makVrv::DtDynamicTerrainWorld::RequestHandle myRequestHandle
Definition: entityTerrainGeometryHandle.h:123
std::shared_ptr< CollisionObject > Ptr
Definition: entityTerrainGeometryHandle.h:38
boost::optional< DtAppearance > myCurrentAppearance
Definition: entityTerrainGeometryHandle.h:117
Implementation of handle which allows controlling entity geometry which has been inserted into the te...
Definition: entityTerrainGeometryHandle.h:30
boost::optional< DtDcm > myCurrentOrientation
Definition: entityTerrainGeometryHandle.h:119
Definition: bvhTriangleMeshShape.h:112
Interface which abstracts the concept of a individually identifiable &quot;thing&quot; in the terrain...
Definition: DtDynamicTerrainFeature.h:83
makVrv::DtDynamicTerrainGeometry * myGeometry
Definition: entityTerrainGeometryHandle.h:76
makVrv::DtDynamicTerrainWorld::FeatureHandle myFeatureHandle
Definition: entityTerrainGeometryHandle.h:122
Contains makVrv::DtDynamicTerrainFeature class.
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
Contains makVrv::DtDynamicTerrainWorld class.
Command which can be given to the dynamic terrain system to perform some change. This class is a simp...
Definition: DtDynamicTerrainChange.h:42
Feature Insertion/Removal/Paging Features represent parts of the terrain which are individually ident...
Definition: DtDynamicTerrainWorld.h:97
This class wraps the VR-Vantage Display Engine, and uses as a terrain loader and intersector. This is the terrain engine that powers the DtVantageTerrainImplementation. The DtVantageTerrainEngine runs the DtDe it its own thread, and processes commands thought the command queue.
Definition: vantageTerrainEngine.h:112
AppearanceMap myAppearanceMap
Definition: entityTerrainGeometryHandle.h:125
makVrv::DtDynamicTerrainGeometry * myOriginalGeometry
Definition: entityTerrainGeometryHandle.h:77
std::atomic< unsigned > myEnableCount
Definition: entityTerrainGeometryHandle.h:48
const DtFilename myFile
Definition: entityTerrainGeometryHandle.h:115
std::vector< CollisionObject::Ptr > CollisionObjectVector
Definition: entityTerrainGeometryHandle.h:82
Definition: point.h:34
boost::optional< DtPoint > myCurrentLocation
Definition: entityTerrainGeometryHandle.h:118
Resource handle for a change request which has been added to the system. Returned from addChangeReque...
Definition: DtDynamicTerrainFeature.h:95

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)