VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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)