VR-Forces Developer's Guide
Home
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
vrfobjcore
debugDrawManager.h
Go to the documentation of this file.
1
/******************************************************************************
5
10
#pragma once
11
12
#include <vrfobjcore/vrfobjcoreDefines.h>
13
14
#include <terrainInterface/terrainProcessPolygonsBox.h>
15
#include <vrfDebugDrawConnector/vrfMessage.h>
16
#include <vrfDebugDrawConnector/vrfDebugDrawConnector.h>
17
#include <terrainInterface/vrfLine.h>
18
#include <terrainInterface/vrfPoint.h>
19
#include <vrfNavigation/navArea.h>
20
#include <vrfutil/sphere2.h>
21
#include <vrfmsgs/ifDebugDrawTerrain.h>
22
#include <features/featureGeometry.h>
23
#include <features/featureSet.h>
24
#include <features/feature.h>
25
#include <tbb/spin_mutex.h>
26
#include <tbb/task_arena.h>
27
#include <atomic>
28
#include <string>
29
#include <terrainInterface/debugDrawTerrainOutputInterface.h>
30
#include <unordered_map>
31
32
class DtSimulationServices;
33
class DtSimMessage;
34
class DtIfDebugDrawFeature;
35
39
class DT_DLL_vrfobjcore DtDebugDrawManager
40
{
41
public:
42
using DtTerrainGeometryMap = std::unordered_map<DtTerrainGeometryId, std::vector<DtTerrainTriangleStruct> >;
43
public:
44
//CTOR
45
DtDebugDrawManager(DtSimulationServices* simManager);
46
//DTOR
47
virtual ~DtDebugDrawManager();
48
49
51
virtual void tick();
52
55
static void tickCallback(void* args);
56
58
static void messageConectorCallback(DtSimMessage* msg, void* usr);
59
61
static void messageTerrainCallback(DtSimMessage* msg, void* usr);
62
64
static void messageFeatureCallback(DtSimMessage* msg, void* usr);
65
67
static void messageNavMeshCallback(DtSimMessage* msg, void* usr);
68
70
72
virtual void sendDrawTerrainSkinRequest(const std::string& EntityId, const std::vector<DtTerrainTriangleStruct>& triangles,
73
DtIfDebugDrawTerrain::DtSkinColorMode skinDrawMode, float colorAlpha);
75
virtual void sendDeleteTerrainSkinRequest(const std::string& EntityId);
77
virtual void sendDrawTerrainNormalRequest(const std::string& EntityId, const std::vector<DtTerrainTriangleStruct>& triangles);
79
virtual void sendDeleteTerrainNormalRequest(const std::string& EntityId);
81
virtual void sendElevationTileRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines, const std::vector<makVrf::DtColorPoint>& points);
83
virtual void sendDeleteElevationTileRequest(const std::string& EntityId);
85
virtual void sendProceduralTreeTileRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
87
virtual void sendDeleteProceduralTreeTileRequest(const std::string& EntityId);
89
virtual void sendLastIntersections(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines, const std::vector<makVrf::DtColorPoint>& pointList);
91
virtual void sendDeleteLastIntersections(const std::string& EntityId, int refresh);
93
virtual void sendCollisionRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
95
virtual void sendDeleteCollisionRequest(const std::string& EntityId);
97
virtual void sendQueryRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
99
virtual void sendDeleteQueryRequest(const std::string& EntityId);
101
virtual void sendPageOutNodeBSRequest(const std::string& EntityId, const DtNodeBoundingList& nodeBoundingList);
103
virtual void sendDeletePageOutNodeBSRequest(const std::string& EntityId);
105
virtual void sendPageInNodeBSRequest(const std::string& EntityId, const DtNodeBoundingList& nodeBoundingList);
107
virtual void sendDeletePageInNodeBSRequest(const std::string& EntityId);
108
110
112
virtual void sendFeatureLinearRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
114
virtual void sendDeleteFeatureLinearRequest(const std::string& EntityId);
116
virtual void addLinearFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, bool& upVectorInit, DtVector& upVector, unsigned red, unsigned green, unsigned blue);
118
virtual void addPointFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, unsigned red, unsigned green, unsigned blue);
120
virtual void addArealFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, bool& upVectorInit, DtVector& upVector, unsigned red, unsigned green, unsigned blue);
121
123
125
virtual void offsetNavMesh(std::list<DtNavArea::DtNavTriangleInfo>& triangles, float offset);
127
virtual void sendDrawNavMeshRequest(const std::string& EntityId, const std::list<DtNavArea::DtNavTriangleInfo>& triangles,
128
bool enableColor, float alpha);
130
virtual void sendDeleteNavMeshRequest(const std::string& EntityId);
131
132
virtual DtTerrainGeometryMap& terrainGeometryMap();
133
134
protected:
135
137
virtual bool init();
139
virtual void connect();
141
virtual void disconnect();
143
virtual void setIp(const std::string& serverAddress);
145
virtual void setPort(unsigned int port);
146
148
virtual void color(unsigned& rmix, unsigned& gmix, unsigned& bmix);
150
void newFilterArea(DtIfDebugDrawFeature* msgContent);
153
void addFeature(const MAKVRinTerra::DtFeature& feature);
155
virtual void checkForAddedFeature();
157
virtual void deleteLinearFeature();
159
virtual void sendFeatures(std::vector< std::shared_ptr<MAKVRinTerra::DtFeature> >& newFeatures);
161
DtSimulationServices* simulationServices() const { return mySimulationServices; };
162
164
virtual DtTerrainProcessPolygonsBox boundingBox(DtVector topLeftCorner,
165
DtVector topRightCorner, DtVector bottomLeftCorner, DtVector bottomRightCorner);
166
168
virtual void handleConnection(makVrf::DtDebugDrawConnector* connection);
170
virtual void handleDisconnection(makVrf::DtDebugDrawConnector* connection);
172
virtual void handleTerrainAreaResponse(makVrf::DtBaseMessage* msg);
174
virtual void handleFeatureResponse(makVrf::DtBaseMessage* msg);
175
176
protected:
177
DtSimulationServices* mySimulationServices;
179
std::string myServerAddress;
181
unsigned int myPort;
183
bool myIsConnected;
185
unsigned int myVisId;
187
makVrf::DtDebugDrawConnector* myConnector;
189
std::unique_ptr<MAKVRinTerra::DtFeatureSet> myFeatureSet;
191
MAKVRinTerra::DtFeatureSet::DetachCallback myDetacher;
193
std::string myFeatureQuery;
195
float myFeatureOffset;
197
bool myClampFeature;
198
200
mutable tbb::spin_mutex myMutex;
202
std::vector<makVrf::DtLine> myFeaturePoint;
204
std::vector<makVrf::DtLine> myFeatureLinear;
206
std::vector<makVrf::DtLine> myFeatureAreal;
208
std::vector< std::shared_ptr<MAKVRinTerra::DtFeature> > myPendingPageInFeatures;
210
bool myInit;
212
std::atomic<unsigned> myNumEmptyTick;
214
bool myFeatureToSend;
216
bool myCheckForAddedFeature;
218
bool myDrawPointFeature;
220
bool myDrawLinearFeature;
222
bool myDrawArealFeature;
223
tbb::task_arena myArena;
224
226
227
DtTerrainGeometryMap myTerrainGeometryMap;
228
};
229
231
class DT_DLL_vrfobjcore DtDebugDrawTerrainWithInstancesOutputInterface : public DtDebugDrawTerrainOutputInterface
232
{
233
public:
234
236
DtDebugDrawTerrainWithInstancesOutputInterface(const std::string& name);
237
239
virtual ~DtDebugDrawTerrainWithInstancesOutputInterface() override;
240
241
virtual void processTerrainInstance(const DtTerrainInstance& instanceStruct) override;
242
243
virtual bool enableTerrainInstanceProcessing() const override;
244
245
virtual void retrieveAndAddInstanceTriangles(DtDebugDrawManager::DtTerrainGeometryMap& geoInstMap,
246
DtTerrainInterface* terrainIf);
247
248
virtual int instanceCount() const;
249
250
virtual int uniqueTerrainGeometryCount() const;
251
252
protected:
253
tbb::spin_mutex myProcessGeometryInstanceMutex;
254
std::vector<DtTerrainInstance> myInstances;
255
};
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
)