VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
dynamicTerrainGeometryHandle.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
11 
15 #include <matrix/vlVector.h>
16 #include <matrix/vlDcm.h>
17 
18 #include <vector>
19 #include <boost/unordered_map.hpp>
20 #include <tbb/spin_mutex.h>
21 
23 {
25  {
26  public:
27  explicit DynamicFeature(const DtPoint& location, double radius);
28 
29  ~DynamicFeature();
30 
31  DtString description() const;
32 
33  bool matches(const makVrv::DtDynamicTerrainChange&, bool useOriginalGeometry = false) const;
34  bool matches(const makVrv::DtDynamicTerrainGeometry&, bool useOriginalGeometry = false) const;
35 
36  const makVrv::DtDynamicTerrainGeometry* geometry() const;
37  const makVrv::DtDynamicTerrainGeometry* originalGeometry() const;
38 
39  bool isInDefaultState() const;
40  bool lastStateWasDefaultState() const;
41  void changeState(const makVrv::DtDynamicTerrainChanges& history);
42  void iterateCommands(const boost::function<void(const makVrv::DtDynamicTerrainChange&)>&) const;
43 
44  void setToDefaultState();
45 
46  makVrv::DtDynamicTerrainChange* createChange() const;
47 
48  protected:
51  tbb::atomic<bool> myDefaultStateFlag;
52  };
53 public:
54  explicit DtDynamicTerrainGeometryHandle(DtVantageTerrainEngine& engine, const DtPoint& location, double radius);
56 
59 
61  bool isValid() const;
62 
64 
65  bool isDisabled() const;
66  void disable();
67  void setAppearance(DtAppearance app);
68  void setPosition(const DtPoint& location, const DtDcm& orientation);
69 
71  virtual DtVector position() const { return DtVector::zero(); };
72  virtual DtDcm orientation() const { return DtDcm::identity(); };
74 
75 protected:
76 
77  virtual void setupDynamicFeature(const DtPoint& location, double radius);
78  void destroyDynamicFeature();
79 
80  mutable tbb::spin_mutex myMutex;
81 
83 
84  boost::optional<DtPoint> myCurrentLocation;
85  boost::optional<DtDcm> myCurrentOrientation;
86 
87  boost::shared_ptr<DynamicFeature> myFeature;
90 };
makVrv::DtDynamicTerrainGeometry * myGeometry
Definition: dynamicTerrainGeometryHandle.h:49
Contains makVrv::DtDynamicTerrainLine class.
Definition: DtDynamicTerrainFeature.h:316
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
Allows manipulating a terrain object. Returned by functions which create terrain objects.
Definition: terrainImplementation.h:143
virtual DtDcm orientation() const
Implementation of DtTerrainGeometryHandle interface.
Definition: dynamicTerrainGeometryHandle.h:72
makVrv::DtDynamicTerrainWorld::FeatureHandle myFeatureHandle
Definition: dynamicTerrainGeometryHandle.h:88
DtDynamicTerrainLine is used to represent a collection of vertices for a linear dynamic terrain objec...
Definition: DtDynamicTerrainLine.h:24
DtVantageTerrainEngine & myVantageTerrainEngine
Definition: dynamicTerrainGeometryHandle.h:82
tbb::spin_mutex myMutex
Definition: dynamicTerrainGeometryHandle.h:80
boost::optional< DtDcm > myCurrentOrientation
Definition: dynamicTerrainGeometryHandle.h:85
makVrv::DtDynamicTerrainGeometry * myOriginalGeometry
Definition: dynamicTerrainGeometryHandle.h:50
virtual DtVector position() const
Unimplemented.
Definition: dynamicTerrainGeometryHandle.h:71
Interface which abstracts the concept of a individually identifiable &quot;thing&quot; in the terrain...
Definition: DtDynamicTerrainFeature.h:83
boost::optional< DtPoint > myCurrentLocation
Definition: dynamicTerrainGeometryHandle.h:84
Contains makVrv::DtDynamicTerrainFeature class.
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
makVrv::DtDynamicTerrainWorld::RequestHandle myRequestHandle
Definition: dynamicTerrainGeometryHandle.h:89
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:99
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:109
Definition: dynamicTerrainGeometryHandle.h:24
boost::shared_ptr< DynamicFeature > myFeature
Definition: dynamicTerrainGeometryHandle.h:87
Definition: point.h:34
Definition: dynamicTerrainGeometryHandle.h:22
Resource handle for a change request which has been added to the system. Returned from addChangeReque...
Definition: DtDynamicTerrainFeature.h:95
tbb::atomic< bool > myDefaultStateFlag
Definition: dynamicTerrainGeometryHandle.h:51

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)