VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainProfileRequestManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
9 
10 #include <matrix/vlMath.h>
11 #ifdef WIN32
12 #include <WinSock2.h>
13 #endif
14 #include <tbb/spin_mutex.h>
15 #include <tbb/tbb_thread.h>
16 #include <tbb/atomic.h>
17 #include <tbb/compat/condition_variable>
19 
20 #include <vector>
21 
26 
27 class DtSimManager;
28 class DtSimMessage;
30 
32 {
33 public:
34 
37 
40 
42  virtual bool init();
43 
45  virtual void tick();
46 
48  virtual void terrainClosed();
49 
50 protected:
51 
54  static void terrainProfileInformationRequestCallback(DtSimMessage* msg, void* usr);
55  virtual void processTerrainProfileInformationRequest(DtSimInterfaceMessage* msg);
57 
60  static void cancelTerrainProfileInformationRequestCallback(DtSimMessage* msg, void* usr);
61  virtual void processCancelTerrainProfileInformationRequest(DtSimInterfaceMessage* msg);
63 
64  virtual void processTerrainRequestInformation();
65 
66 private:
69 
71  const DtTerrainProfileRequestManager & operator=(const DtTerrainProfileRequestManager & orig);
72 
73 protected:
75 
77  std::auto_ptr<tbb::tbb_thread> myTerrainProcessInformationThread;
78  typedef tbb::interface5::condition_variable Condition;
79  typedef tbb::mutex ConditionMutex;
80  typedef tbb::interface5::unique_lock<ConditionMutex> ConditionLock;
84  tbb::atomic<bool> myClearPendingIntersections;
85  tbb::atomic<bool> myProcessed;
86 
88 
90  {
91  TerrainInformationRequest() : requestId(0), sendPartial(true) {};
92  TerrainInformationRequest(int r, bool s = true, const std::vector<DtVector>& p = std::vector<DtVector>()) :
93  requestId(r), sendPartial(s), points(p) {};
94  TerrainInformationRequest(const TerrainInformationRequest& orig) : requestId(orig.requestId), sendPartial(orig.sendPartial), points(orig.points) {};
95  int requestId;
97  std::vector<DtVector> points;
98  };
99 
100  typedef std::vector<TerrainInformationRequest> TerrainInformationRequests;
102 
104  {
107  TerrainInformationResult(const TerrainInformationResult& orig) : TerrainInformationRequest(orig), allResults(orig.allResults) {};
108 
109  struct Result
110  {
111  Result() : soilType(0xFFFFFFFF), terrainHeight(0.) {};
112  Result(const Result& orig) : soilType(orig.soilType), terrainHeight(orig.terrainHeight), testPoint(orig.testPoint) {};
113 
114  unsigned int soilType;
117  };
118 
119  typedef std::map<int, Result> Results;
120 
122  };
123 
124  typedef std::map<int, TerrainInformationResult> TerrainInformationResults;
126 
127  typedef std::map<int, DtIfIntersectionInformationResponse> ResultsToSend;
129 };
130 
std::map< int, DtIfIntersectionInformationResponse > ResultsToSend
Definition: terrainProfileRequestManager.h:127
std::auto_ptr< tbb::tbb_thread > myTerrainProcessInformationThread
Member variables used to interact with the radar coverage thread.
Definition: terrainProfileRequestManager.h:77
Results allResults
Definition: terrainProfileRequestManager.h:121
TerrainInformationRequest(int r, bool s=true, const std::vector< DtVector > &p=std::vector< DtVector >())
Definition: terrainProfileRequestManager.h:92
TerrainInformationRequests myTerrainInformationRequests
Definition: terrainProfileRequestManager.h:101
ConditionMutex myTerrainProcessInformationConditionMutex
Definition: terrainProfileRequestManager.h:82
ResultsToSend myResultsToSend
Definition: terrainProfileRequestManager.h:128
Definition: terrainProfileRequestManager.h:31
DtSimInterfaceMessage is used to send a message to the front end or the back end. ...
Definition: simInterfaceMessage.h:32
Definition: terrainProfileRequestManager.h:103
std::map< int, Result > Results
Definition: terrainProfileRequestManager.h:119
std::vector< TerrainInformationRequest > TerrainInformationRequests
Definition: terrainProfileRequestManager.h:100
tbb::interface5::condition_variable Condition
Definition: terrainProfileRequestManager.h:78
Definition: terrainProfileRequestManager.h:109
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
File: simMsg.h.
Definition: simMessage.h:35
tbb::spin_mutex myTerrainProcessInformationAdditionMutex
Definition: terrainProfileRequestManager.h:87
tbb::atomic< bool > myShutdownTerrainProcessInformationFlag
Definition: terrainProfileRequestManager.h:83
double terrainHeight
Definition: terrainProfileRequestManager.h:116
std::map< int, TerrainInformationResult > TerrainInformationResults
Definition: terrainProfileRequestManager.h:124
tbb::interface5::unique_lock< ConditionMutex > ConditionLock
Definition: terrainProfileRequestManager.h:80
tbb::mutex ConditionMutex
Definition: terrainProfileRequestManager.h:79
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
Result()
Definition: terrainProfileRequestManager.h:111
TerrainInformationResult(const TerrainInformationRequest &orig)
Definition: terrainProfileRequestManager.h:106
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
Condition myTerrainProcessInformationCondition
Definition: terrainProfileRequestManager.h:81
bool sendPartial
Definition: terrainProfileRequestManager.h:96
TerrainInformationResult()
Definition: terrainProfileRequestManager.h:105
DtVector testPoint
Definition: terrainProfileRequestManager.h:115
std::vector< DtVector > points
Definition: terrainProfileRequestManager.h:97
Definition: terrainProfileRequestManager.h:89
TerrainInformationRequest()
Definition: terrainProfileRequestManager.h:91
tbb::atomic< bool > myClearPendingIntersections
Definition: terrainProfileRequestManager.h:84
TerrainInformationResult(const TerrainInformationResult &orig)
Definition: terrainProfileRequestManager.h:107
TerrainInformationRequest(const TerrainInformationRequest &orig)
Definition: terrainProfileRequestManager.h:94
tbb::atomic< bool > myProcessed
Definition: terrainProfileRequestManager.h:85
TerrainInformationResults myTerrainInformationResults
Definition: terrainProfileRequestManager.h:125
DtSimManager * mySimManager
Definition: terrainProfileRequestManager.h:74

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)