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/atomic.h>
27 #include <boost/shared_ptr.hpp>
28 #include <string>
29 
30 class DtSimulationServices;
31 class DtSimMessage;
32 class DtIfDebugDrawFeature;
33 
37 class DT_DLL_vrfobjcore DtDebugDrawManager
38 {
39 public:
40  //CTOR
41  DtDebugDrawManager(DtSimulationServices* simManager);
42  //DTOR
43  virtual ~DtDebugDrawManager();
44 
45 
47  virtual void tick();
48 
51  static void tickCallback(void* args);
52 
54  static void messageConectorCallback(DtSimMessage* msg, void* usr);
55 
57  static void messageTerrainCallback(DtSimMessage* msg, void* usr);
58 
60  static void messageFeatureCallback(DtSimMessage* msg, void* usr);
61 
63  static void messageNavMeshCallback(DtSimMessage* msg, void* usr);
64 
66 
68  virtual void sendDrawTerrainSkinRequest(const std::string& EntityId, const std::vector<DtTerrainTriangleStruct>& triangles,
69  DtIfDebugDrawTerrain::DtSkinColorMode skinDrawMode, float colorAlpha);
71  virtual void sendDeleteTerrainSkinRequest(const std::string& EntityId);
73  virtual void sendDrawTerrainNormalRequest(const std::string& EntityId, const std::vector<DtTerrainTriangleStruct>& triangles);
75  virtual void sendDeleteTerrainNormalRequest(const std::string& EntityId);
77  virtual void sendElevationTileRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines, const std::vector<makVrf::DtColorPoint>& points);
79  virtual void sendDeleteElevationTileRequest(const std::string& EntityId);
81  virtual void sendProceduralTreeTileRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
83  virtual void sendDeleteProceduralTreeTileRequest(const std::string& EntityId);
85  virtual void sendLastIntersections(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines, const std::vector<makVrf::DtColorPoint>& pointList);
87  virtual void sendDeleteLastIntersections(const std::string& EntityId, int refresh);
89  virtual void sendCollisionRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
91  virtual void sendDeleteCollisionRequest(const std::string& EntityId);
93  virtual void sendQueryRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
95  virtual void sendDeleteQueryRequest(const std::string& EntityId);
97  virtual void sendPageOutNodeBSRequest(const std::string& EntityId, const DtNodeBoundingList& nodeBoundingList);
99  virtual void sendDeletePageOutNodeBSRequest(const std::string& EntityId);
101  virtual void sendPageInNodeBSRequest(const std::string& EntityId, const DtNodeBoundingList& nodeBoundingList);
103  virtual void sendDeletePageInNodeBSRequest(const std::string& EntityId);
104 
106 
108  virtual void sendFeatureLinearRequest(const std::string& EntityId, const std::vector<makVrf::DtLine>& lines);
110  virtual void sendDeleteFeatureLinearRequest(const std::string& EntityId);
112  virtual void addLinearFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, bool& upVectorInit, DtVector& upVector, unsigned red, unsigned green, unsigned blue);
114  virtual void addPointFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, unsigned red, unsigned green, unsigned blue);
116  virtual void addArealFeatures(MAKVRinTerra::DtFeatureGeometry& geom, float offset, bool& upVectorInit, DtVector& upVector, unsigned red, unsigned green, unsigned blue);
117 
119 
121  virtual void offsetNavMesh(std::list<DtNavArea::DtNavTriangleInfo>& triangles, float offset);
123  virtual void sendDrawNavMeshRequest(const std::string& EntityId, const std::list<DtNavArea::DtNavTriangleInfo>& triangles,
124  bool enableColor, float alpha);
126  virtual void sendDeleteNavMeshRequest(const std::string& EntityId);
127 
128 
129 protected:
130 
132  virtual bool init();
134  virtual void connect();
136  virtual void disconnect();
138  virtual void setIp(const std::string& serverAddress);
140  virtual void setPort(unsigned int port);
141 
143  virtual void color(unsigned& rmix, unsigned& gmix, unsigned& bmix);
145  void newFilterArea(DtIfDebugDrawFeature* msgContent);
148  void addFeature(const MAKVRinTerra::DtFeature& feature);
150  virtual void checkForAddedFeature();
152  virtual void deleteLinearFeature();
154  virtual void sendFeatures(std::vector< boost::shared_ptr<MAKVRinTerra::DtFeature> >& newFeatures);
156  DtSimulationServices* simulationServices() const { return mySimulationServices; };
157 
159  virtual DtTerrainProcessPolygonsBox boundingBox(DtVector topLeftCorner,
160  DtVector topRightCorner, DtVector bottomLeftCorner, DtVector bottomRightCorner);
161 
163  virtual void handleConnection(makVrf::DtDebugDrawConnector* connection);
165  virtual void handleDisconnection(makVrf::DtDebugDrawConnector* connection);
167  virtual void handleTerrainAreaResponse(makVrf::DtBaseMessage* msg);
169  virtual void handleFeatureResponse(makVrf::DtBaseMessage* msg);
170 
171 protected:
172  DtSimulationServices* mySimulationServices;
174  std::string myServerAddress;
176  unsigned int myPort;
178  bool myIsConnected;
180  unsigned int myVisId;
182  makVrf::DtDebugDrawConnector* myConnector;
184  boost::scoped_ptr<MAKVRinTerra::DtFeatureSet> myFeatureSet;
186  MAKVRinTerra::DtFeatureSet::DetachCallback myDetacher;
188  std::string myFeatureQuery;
190  float myFeatureOffset;
192  mutable tbb::spin_mutex myMutex;
194  std::vector<makVrf::DtLine> myFeaturePoint;
196  std::vector<makVrf::DtLine> myFeatureLinear;
198  std::vector<makVrf::DtLine> myFeatureAreal;
200  std::vector< boost::shared_ptr<MAKVRinTerra::DtFeature> > myPendingPageInFeatures;
202  bool myInit;
204  tbb::atomic<unsigned> myNumEmptyTick;
206  bool myFeatureToSend;
208  bool myCheckForAddedFeature;
210  bool myDrawPointFeature;
212  bool myDrawLinearFeature;
214  bool myDrawArealFeature;
215 };

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)