VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
symbolTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrfGuiCore/vrfGuiCore.h>
12 #include <vrvUtil/signalslib.h>
14 #include <vlutil/vlPerformanceStats.h>
15 #include <vrvCore/DtEntityState.h>
16 
18 
19 #include <boost/signals2.hpp>
20 
21 #include <matrix/vlVector.h>
22 #include <vector>
23 
24 namespace makVrv
25 {
26  class DtDe;
27  class DtSimObjectEntry;
28  class DtModel;
29  class DtCoordinateSystem;
30 }
31 
32 namespace makVrf
33 {
42  {
43  protected:
44  class MyTimeStatistic : public DtTimeStatistic
45  {
46  public:
48 
49  inline double sum() const { return mySum; };
50  };
51 
52  protected:
53  struct TrackingData
54  {
57  const DtVector& pos = DtVector::zero()) : model(m), stateView(sv), lastSetPosition(pos) {};
58  TrackingData(const TrackingData& orig) : model(orig.model), lastSetPosition(orig.lastSetPosition),
59  stateView(orig.stateView) {};
60 
61  makVrv::DtModel* model;
64  };
65 
66  typedef std::map<makVrv::DtElementID, TrackingData> TrackingMap;
67 
68  struct TrackData
69  {
70  DtTimedSection myTimer;
74  };
75 
76  public:
78  virtual ~DtSymbolTracker();
79 
82  virtual void setLinePoints(const std::vector<DtVector>&);
83 
86  virtual void setShowObjectsWithinRange(double);
87 
89  virtual void findAllInRange();
90 
92  virtual void setSuspendForMovement(bool);
93  virtual bool suspendForMovement() const;
94 
96  virtual void setDistanceMoveTolerance(double);
97  virtual double distanceMoveTolerance() const;
98 
100  virtual void setAlwaysTrack(makVrv::DtUniqueID);
102  {
103  return myAlwaysTrack;
104  }
105 
108  virtual bool canTrack(makVrv::DtModel* model, double& range,
109  DtVector* retPosition = 0);
110 
113  virtual bool withinRange(const DtVector&, double& range) const;
114 
116  virtual void suspend();
117 
119  virtual void resume();
120 
122  virtual bool isSuspended() const;
123 
125  virtual DtVector geocentricPosition(makVrv::DtModel*) const;
126 
128  virtual void modelAboutToBeDestroyed(makVrv::DtModel*);
129 
131  virtual void tickTrackedItems();
132 
135 
137  boost::signals2::signal<void (DtVector geocentricPosition,
139 
141  boost::signals2::signal<void (DtVector geocentricPosition,
143 
145  boost::signals2::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
146 
148  boost::signals2::signal<void ()> signal_suspended;
150 
151  protected:
154  virtual void checkTracked();
155 
157  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
158  virtual void removeTrackedItem(makVrv::DtElementID);
159 
160  virtual bool watchModel(makVrv::DtModel*);
161 
164  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
165 
167  virtual void reset(TrackingMap&);
168 
170  virtual void updateRateForRange(makVrv::DtModel*, double range);
171 
173  virtual bool checkAndRemove(makVrv::DtElementID id, TrackingMap& map) const;
174 
176  virtual void tick();
177 
179  virtual makVrv::DtModel* findModelFor(makVrv::DtElementID) const;
180 
182  virtual void updateData(TrackData& data, bool tracked = false, bool force = false);
183 
185  virtual void checkWaiting();
186 
188  virtual makVrv::DtElementID simIdFromModel(makVrv::DtModel*) const;
189 
190  protected:
192  std::vector<DtVector> myLinePoints;
193  double myRange;
195 
200 
201  DtTimedSection myLastMovement;
203 
207 
209 
210  std::map<makVrv::DtElementID, makVrv::DtSignalConnectionManager*> myMadeConnection;
211  std::map<makVrv::DtModel*, makVrv::DtElementID> myModelToSimIdMap;
214  };
215 
218  {
219  public:
221  virtual ~DtSymbolTrackerCreator();
222 
224  static DtSymbolTrackerCreator& instance(makVrv::DtDe& de);
225  static void registerInstance(makVrv::DtDe&, DtSymbolTrackerCreator*);
226 
227  virtual DtSymbolTracker* create(makVrv::DtDe&);
228  };
229 
230 }
Contains makVrf::DtSymbolTracker class.
Definition: symbolTracker.h:41
int myLastMovementTime
Definition: symbolTracker.h:202
Virtual base class.
Definition: DtVirtualBaseClass.h:22
double myRange
Definition: symbolTracker.h:193
boost::signals2::signal< void()> signal_suspended
Signal when suspended.
Definition: symbolTracker.h:148
const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > * stateView
Definition: symbolTracker.h:63
Definition: symbolTracker.h:53
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntity
Sent the first time an entity is being tracked.
Definition: symbolTracker.h:138
std::map< makVrv::DtModel *, makVrv::DtElementID > myModelToSimIdMap
Definition: symbolTracker.h:211
double sum() const
Definition: symbolTracker.h:49
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
TrackingData(const TrackingData &orig)
Definition: symbolTracker.h:58
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntityUpdated
Sent when a tracked entity is updated.
Definition: symbolTracker.h:142
Definition: symbolTracker.h:68
MyTimeStatistic myTotalTime
Definition: symbolTracker.h:71
TrackData myAt8s
Definition: symbolTracker.h:198
!!!!!!!! Creator
Definition: symbolTracker.h:217
boost::signals2::signal< void(makVrv::DtElementID)> signal_stoppedTrackingEntity
Sent when a track entity is stopped from being tracked.
Definition: symbolTracker.h:145
Definition: symbolTracker.h:44
double myTimeoutPeriod
Definition: symbolTracker.h:72
Contains makVrv::DtVirtualBaseClass class.
MyTimeStatistic()
Definition: symbolTracker.h:47
std::map< makVrv::DtElementID, makVrv::DtSignalConnectionManager * > myMadeConnection
Definition: symbolTracker.h:210
makVrv::DtUniqueID alwaysTrack() const
Definition: symbolTracker.h:101
makVrv::DtUniqueID myAlwaysTrack
Definition: symbolTracker.h:213
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:25
TrackingData(makVrv::DtModel *m=0, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *sv=0, const DtVector &pos=DtVector::zero())
Definition: symbolTracker.h:55
makVrv::DtCoordinateSystem & myCoordinateSystem
Definition: symbolTracker.h:208
std::map< makVrv::DtElementID, TrackingData > TrackingMap
Definition: symbolTracker.h:66
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
Contains makVrv::DtEntityState class.
TrackData myWaiting
Definition: symbolTracker.h:199
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
double myDistanceMoveTolerance
Definition: symbolTracker.h:212
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
TrackData myTrackingMap
Definition: symbolTracker.h:196
Base class to provide boost signal/slot management.
bool mySuspendForMovement
Definition: symbolTracker.h:206
DtTimedSection myLastMovement
Definition: symbolTracker.h:201
A model which owns a single model instance.
Definition: DtModel.h:56
bool mySuspended
Definition: symbolTracker.h:204
makVrv::DtDe & myDe
Definition: symbolTracker.h:191
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtVector lastSetPosition
Definition: symbolTracker.h:62
bool mySuspendedByMovement
Definition: symbolTracker.h:205
makVrv::DtSignalConnectionManager myConnectionManager
Definition: symbolTracker.h:194
std::vector< DtVector > myLinePoints
Definition: symbolTracker.h:192
DtTimedSection myTimer
Definition: symbolTracker.h:70
TrackingMap myMap
Definition: symbolTracker.h:73
TrackData myAt4s
Definition: symbolTracker.h:197

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)