VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainProcessPolygonsBox.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 #include "geometry/surface.h"
9 #include "geometry/point.h"
10 #include "matrix/coordTransform.h"
11 
12 #include <deque>
13 #include <vector>
14 
15 #include <boost/shared_ptr.hpp>
16 #include <boost/optional.hpp>
17 
18 class Coordinate_System;
19 
20 namespace makVrv
21 {
22  class DtDynamicTerrainFeature;
23 }
24 
26 {
27  DtTerrainTriangleStruct() : shapeId(0), fromBullet(false) { }
28 
29  DtPoint points[3];
31  int shapeId;
32  bool fromBullet;
33  std::vector< boost::shared_ptr<makVrv::DtDynamicTerrainFeature> > dynamicTerrainFeatures;
34 };
35 
40 {
41 public:
42  explicit DtTerrainProcessPolygonsBox(const Coordinate_System& local);
44  const Coordinate_System& local,
45  const DtPoint& nw, const DtPoint& ne, const DtPoint& sw, const DtPoint& se);
46 
47  virtual ~DtTerrainProcessPolygonsBox();
48 
54  virtual DtPoint northeast(bool inLocal = true) const;
55  virtual DtPoint northwest(bool inLocal = true) const;
56  virtual DtPoint southeast(bool inLocal = true) const;
57  virtual DtPoint southwest(bool inLocal = true) const;
59 
62  virtual void setNewNW(const DtPoint& nw);
63  virtual void setNewNE(const DtPoint& ne);
64  virtual void setNewSW(const DtPoint& sw);
65  virtual void setNewSE(const DtPoint& se);
67 
74  virtual double minAltitude() const;
75  virtual double maxAltitude() const;
76  virtual void setMinAltitude(double);
77  virtual void setMaxAltitude(double);
79 
80  virtual bool isUseAllTerrain() const;
81  virtual void setIsUseAllTerrain(bool useAllTerrain);
82 
83  virtual bool doesTriangleIntersectBox(const DtTerrainTriangleStruct& polygon) const;
84  virtual bool isPointInsideBox(const DtPoint &point) const;
85  virtual DtPoint centerOfBox() const;
86 
87 protected:
88  virtual DtCoordTransform transform() const;
89  virtual void clearTopoData();
90 
97  double myMinAltitude;
98  double myMaxAltitude;
99  mutable boost::optional<DtPoint> myNorthwestTopo;
100  mutable boost::optional<DtPoint> myNortheastTopo;
101  mutable boost::optional<DtPoint> mySouthwestTopo;
102  mutable boost::optional<DtPoint> mySoutheastTopo;
103  mutable boost::optional<DtPoint> myTopoAABBMin;
104  mutable boost::optional<DtPoint> myTopoAABBMax;
105  mutable boost::optional<DtCoordTransform> myTransform;
106 };
107 
108 typedef void (*DtTriangleCallbackFinalizeFcn)(int status, void* usr);
109 typedef void (*DtTriangleCallbackFcn)(DtTerrainTriangleStruct& triangle, void* usr);
110 
114 {
115 public:
117  virtual bool processTriangles() const;
118 
120  virtual void processTriangle(const DtTerrainTriangleStruct& triangle) = 0;
121 
124  virtual bool processAABBs() const;
125 
127  virtual void queryAABB(const DtVector& min, const DtVector& max, const DtCoordTransform& toLocal);
128 
132  virtual bool objectAABB(const DtVector& min, const DtVector& max, const DtCoordTransform& toLocal);
133 
135  virtual bool processElevationTiles() const;
136 
139  virtual bool elevationTile(const DtVector &p1, const DtVector& p2, const DtVector& p3, const DtVector& p4);
140 
142  virtual bool processElevationPosts() const;
143 
146  virtual bool elevationPost(std::vector<DtPoint>& postArray);
147 
151  virtual bool forcePaging() const;
152 
154  virtual void setFailure(const std::string& reason);
155 
158  virtual bool shouldExit() const;
159 
161  virtual void setName(const std::string& name);
162 
164  virtual std::string& name();
165 
166 protected:
167 
168  std::string myTerrainAreaName;
169 
170 };
171 
double myMaxAltitude
Definition: terrainProcessPolygonsBox.h:98
boost::optional< DtPoint > myTopoAABBMin
Definition: terrainProcessPolygonsBox.h:103
boost::optional< DtPoint > myNorthwestTopo
Definition: terrainProcessPolygonsBox.h:99
DtPoint mySouthwest
Definition: terrainProcessPolygonsBox.h:95
DtSurface surface
Definition: terrainProcessPolygonsBox.h:30
const Coordinate_System & myLocal
Definition: terrainProcessPolygonsBox.h:91
Definition: surface.h:181
DtPoint myNorthwest
Definition: terrainProcessPolygonsBox.h:93
DtPoint myNortheast
Definition: terrainProcessPolygonsBox.h:94
boost::optional< DtPoint > myTopoAABBMax
Definition: terrainProcessPolygonsBox.h:104
Definition: terrainProcessPolygonsBox.h:25
Definition: coordSystem.h:54
std::string myTerrainAreaName
Definition: terrainProcessPolygonsBox.h:168
bool myIsUseAllTerrain
Definition: terrainProcessPolygonsBox.h:92
#define DT_DLL_terrainInterface
This file is used to determine how to build.
Definition: terrainInterfaceDefines.h:25
boost::optional< DtPoint > myNortheastTopo
Definition: terrainProcessPolygonsBox.h:100
boost::optional< DtPoint > mySouthwestTopo
Definition: terrainProcessPolygonsBox.h:101
boost::optional< DtPoint > mySoutheastTopo
Definition: terrainProcessPolygonsBox.h:102
DtPoint mySoutheast
Definition: terrainProcessPolygonsBox.h:96
boost::optional< DtCoordTransform > myTransform
Definition: terrainProcessPolygonsBox.h:105
void(* DtTriangleCallbackFcn)(DtTerrainTriangleStruct &triangle, void *usr)
Definition: terrainProcessPolygonsBox.h:109
DtTerrainTriangleStruct()
Definition: terrainProcessPolygonsBox.h:27
int shapeId
Definition: terrainProcessPolygonsBox.h:31
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:113
double myMinAltitude
Definition: terrainProcessPolygonsBox.h:97
std::vector< boost::shared_ptr< makVrv::DtDynamicTerrainFeature > > dynamicTerrainFeatures
flag to know if the triangle comes from bullet
Definition: terrainProcessPolygonsBox.h:33
bool fromBullet
Definition: terrainProcessPolygonsBox.h:32
Definition: point.h:34
void(* DtTriangleCallbackFinalizeFcn)(int status, void *usr)
Definition: terrainProcessPolygonsBox.h:108
Represents an area query which can be used to extract triangles from DtTerrainInterface. The box points are in local but the box is always projected against the local topo at the center point of the box.
Definition: terrainProcessPolygonsBox.h:39

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)