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 #include <memory>
15 
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< std::shared_ptr<makVrv::DtDynamicTerrainFeature> > dynamicTerrainFeatures;
34 };
35 
38 using DtTerrainGeometryId = unsigned int;
41 using DtTerrainInstanceId = unsigned int;
42 
46 {
48  DtTerrainInstanceId instanceId = 0;
50  DtTerrainGeometryId geometryId = 0;
52  DtVector offset = DtVector::zero();
54  DtDcm rotation = DtDcm::identity();
55 };
56 
61 {
62 public:
63  explicit DtTerrainProcessPolygonsBox(const Coordinate_System& local);
65  const Coordinate_System& local,
66  const DtPoint& nw, const DtPoint& ne, const DtPoint& sw, const DtPoint& se);
67 
68  virtual ~DtTerrainProcessPolygonsBox();
69 
75  virtual DtPoint northeast(bool inLocal = true) const;
76  virtual DtPoint northwest(bool inLocal = true) const;
77  virtual DtPoint southeast(bool inLocal = true) const;
78  virtual DtPoint southwest(bool inLocal = true) const;
80 
83  virtual void setNewNW(const DtPoint& nw);
84  virtual void setNewNE(const DtPoint& ne);
85  virtual void setNewSW(const DtPoint& sw);
86  virtual void setNewSE(const DtPoint& se);
88 
95  virtual double minAltitude() const;
96  virtual double maxAltitude() const;
97  virtual void setMinAltitude(double);
98  virtual void setMaxAltitude(double);
100 
101  virtual bool isUseAllTerrain() const;
102  virtual void setIsUseAllTerrain(bool useAllTerrain);
103 
104  virtual bool doesTriangleIntersectBox(const DtTerrainTriangleStruct& polygon) const;
105  virtual bool isPointInsideBox(const DtPoint &point) const;
106  virtual DtPoint centerOfBox() const;
107 
108 protected:
109  virtual DtCoordTransform transform() const;
110  virtual void clearTopoData();
111 
120  mutable boost::optional<DtPoint> myNorthwestTopo;
121  mutable boost::optional<DtPoint> myNortheastTopo;
122  mutable boost::optional<DtPoint> mySouthwestTopo;
123  mutable boost::optional<DtPoint> mySoutheastTopo;
124  mutable boost::optional<DtPoint> myTopoAABBMin;
125  mutable boost::optional<DtPoint> myTopoAABBMax;
126  mutable boost::optional<DtCoordTransform> myTransform;
127 };
128 
129 typedef void (*DtTriangleCallbackFinalizeFcn)(int status, void* usr);
130 typedef void (*DtTriangleCallbackFcn)(DtTerrainTriangleStruct& triangle, void* usr);
131 
135 {
136 public:
138  virtual bool processTriangles() const;
139 
142  virtual void processTriangle(const DtTerrainTriangleStruct& triangle) = 0;
143 
146  virtual void processTerrainInstance(const DtTerrainInstance& instanceStruct);
147 
150  virtual bool processAABBs() const;
151 
153  virtual void queryAABB(const DtVector& min, const DtVector& max, const DtCoordTransform& toLocal);
154 
158  virtual bool objectAABB(const DtVector& min, const DtVector& max, const DtCoordTransform& toLocal);
159 
163  virtual bool enableTerrainInstanceProcessing() const;
164 
166  virtual bool processElevationTiles() const;
167 
170  virtual bool elevationTile(const DtVector &p1, const DtVector& p2, const DtVector& p3, const DtVector& p4);
171 
173  virtual bool processElevationPosts() const;
174 
177  virtual bool elevationPost(std::vector<DtPoint>& postArray);
178 
182  virtual bool forcePaging() const;
183 
185  virtual void setFailure(const std::string& reason);
186 
189  virtual bool shouldExit() const;
190 
192  virtual void setName(const std::string& name);
193 
195  virtual std::string& name();
196 
197 protected:
198 
199  std::string myTerrainAreaName;
200 
201 };
202 
double myMaxAltitude
Definition: terrainProcessPolygonsBox.h:119
boost::optional< DtPoint > myTopoAABBMin
Definition: terrainProcessPolygonsBox.h:124
boost::optional< DtPoint > myNorthwestTopo
Definition: terrainProcessPolygonsBox.h:120
DtPoint mySouthwest
Definition: terrainProcessPolygonsBox.h:116
unsigned int DtTerrainInstanceId
Unique ID numbers that reference a specific instance of a set of geometry in the terrain. Each terrain instance references a specific terrain geometry by id, and multiple objects may share the same geometry.
Definition: terrainProcessPolygonsBox.h:41
DtSurface surface
Definition: terrainProcessPolygonsBox.h:30
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
const Coordinate_System & myLocal
Definition: terrainProcessPolygonsBox.h:112
Definition: surface.h:181
unsigned int DtTerrainGeometryId
Unique ID numbers that reference a specific geometry (or set of triangles) in the terrain...
Definition: terrainProcessPolygonsBox.h:38
DtPoint myNorthwest
Definition: terrainProcessPolygonsBox.h:114
DtPoint myNortheast
Definition: terrainProcessPolygonsBox.h:115
boost::optional< DtPoint > myTopoAABBMax
Definition: terrainProcessPolygonsBox.h:125
Definition: terrainProcessPolygonsBox.h:25
Definition: coordSystem.h:54
std::string myTerrainAreaName
Definition: terrainProcessPolygonsBox.h:199
bool myIsUseAllTerrain
Definition: terrainProcessPolygonsBox.h:113
#define DT_DLL_terrainInterface
This file is used to determine how to build.
Definition: terrainInterfaceDefines.h:25
boost::optional< DtPoint > myNortheastTopo
Definition: terrainProcessPolygonsBox.h:121
boost::optional< DtPoint > mySouthwestTopo
Definition: terrainProcessPolygonsBox.h:122
Hold information about a specific terrain instance that may be returned from DtTriangleOutputInterfac...
Definition: terrainProcessPolygonsBox.h:45
boost::optional< DtPoint > mySoutheastTopo
Definition: terrainProcessPolygonsBox.h:123
DtPoint mySoutheast
Definition: terrainProcessPolygonsBox.h:117
boost::optional< DtCoordTransform > myTransform
Definition: terrainProcessPolygonsBox.h:126
void(* DtTriangleCallbackFcn)(DtTerrainTriangleStruct &triangle, void *usr)
Definition: terrainProcessPolygonsBox.h:130
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:134
double myMinAltitude
Definition: terrainProcessPolygonsBox.h:118
voidpf uLong offset
Definition: ioapi.h:42
std::vector< std::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:129
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:60

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)