VR-Forces 5.0.1 Developer's Guide
 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 
14 #include <vlutil/vlPerformanceStats.h>
15 #include <vrvCore/DtEntityState.h>
16 
18 
19 #include <matrix/vlVector.h>
20 #include <vector>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtSimObjectEntry;
26  class DtModel;
27  class DtCoordinateSystem;
28 }
29 
30 namespace makVrf
31 {
40  {
41  protected:
42  class MyTimeStatistic : public DtTimeStatistic
43  {
44  public:
46 
47  inline double sum() const { return mySum; };
48  };
49 
50  protected:
51  struct TrackingData
52  {
55  const DtVector& pos = DtVector::zero()) : model(m), stateView(sv), lastSetPosition(pos) {};
56  TrackingData(const TrackingData& orig) : model(orig.model), lastSetPosition(orig.lastSetPosition),
57  stateView(orig.stateView) {};
58 
59  makVrv::DtModel* model;
62  };
63 
64  typedef std::map<makVrv::DtElementID, TrackingData> TrackingMap;
65 
66  struct TrackData
67  {
72  };
73 
74  public:
76  virtual ~DtSymbolTracker();
77 
80  virtual void setLinePoints(const std::vector<DtVector>&);
81 
84  virtual void setShowObjectsWithinRange(double);
85 
87  virtual void findAllInRange();
88 
90  virtual void setSuspendForMovement(bool);
91  virtual bool suspendForMovement() const;
92 
94  virtual void setDistanceMoveTolerance(double);
95  virtual double distanceMoveTolerance() const;
96 
98  virtual void setAlwaysTrack(makVrv::DtUniqueID);
100  {
101  return myAlwaysTrack;
102  }
103 
106  virtual bool canTrack(makVrv::DtModel* model, double& range,
107  DtVector* retPosition = 0);
108 
111  virtual bool withinRange(const DtVector&, double& range) const;
112 
114  virtual void suspend();
115 
117  virtual void resume();
118 
120  virtual bool isSuspended() const;
121 
123  virtual DtVector geocentricPosition(makVrv::DtModel*) const;
124 
126  virtual void modelAboutToBeDestroyed(makVrv::DtModel*);
127 
129  virtual void tickTrackedItems();
130 
133 
135  boost::signals2::signal<void (DtVector geocentricPosition,
137 
139  boost::signals2::signal<void (DtVector geocentricPosition,
141 
143  boost::signals2::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
144 
146  boost::signals2::signal<void ()> signal_suspended;
148 
149  protected:
152  virtual void checkTracked();
153 
155  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
156  virtual void removeTrackedItem(makVrv::DtElementID);
157 
158  virtual bool watchModel(makVrv::DtModel*);
159 
162  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
163 
165  virtual void reset(TrackingMap&);
166 
168  virtual void updateRateForRange(makVrv::DtModel*, double range);
169 
171  virtual bool checkAndRemove(makVrv::DtElementID id, TrackingMap& map) const;
172 
174  virtual void tick();
175 
177  virtual makVrv::DtModel* findModelFor(makVrv::DtElementID) const;
178 
180  virtual void updateData(TrackData& data, bool tracked = false, bool force = false);
181 
183  virtual void checkWaiting();
184 
186  virtual makVrv::DtElementID simIdFromModel(makVrv::DtModel*) const;
187 
188  protected:
190  std::vector<DtVector> myLinePoints;
191  double myRange;
193 
198 
201 
205 
207 
208  std::map<makVrv::DtElementID, makVrv::DtSignalConnectionManager*> myMadeConnection;
209  std::map<makVrv::DtModel*, makVrv::DtElementID> myModelToSimIdMap;
212  };
213 
216  {
217  public:
219  virtual ~DtSymbolTrackerCreator();
220 
222  static DtSymbolTrackerCreator& instance(makVrv::DtDe& de);
223  static void registerInstance(makVrv::DtDe&, DtSymbolTrackerCreator*);
224 
225  virtual DtSymbolTracker* create(makVrv::DtDe&);
226  };
227 
228 }
Contains makVrf::DtSymbolTracker class.
Definition: symbolTracker.h:39
int myLastMovementTime
Definition: symbolTracker.h:200
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
double myRange
Definition: symbolTracker.h:191
boost::signals2::signal< void()> signal_suspended
Signal when suspended.
Definition: symbolTracker.h:146
const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > * stateView
Definition: symbolTracker.h:61
Definition: symbolTracker.h:51
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntity
Signals sent for entity tracking changes.
Definition: symbolTracker.h:136
std::map< makVrv::DtModel *, makVrv::DtElementID > myModelToSimIdMap
Definition: symbolTracker.h:209
double sum() const
Definition: symbolTracker.h:47
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
TrackingData(const TrackingData &orig)
Definition: symbolTracker.h:56
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntityUpdated
Sent when a tracked entity is updated.
Definition: symbolTracker.h:140
Definition: symbolTracker.h:66
MyTimeStatistic myTotalTime
Definition: symbolTracker.h:69
TrackData myAt8s
Definition: symbolTracker.h:196
!!!!!!!! Creator
Definition: symbolTracker.h:215
boost::signals2::signal< void(makVrv::DtElementID)> signal_stoppedTrackingEntity
Sent when a track entity is stopped from being tracked.
Definition: symbolTracker.h:143
Definition: symbolTracker.h:42
double myTimeoutPeriod
Definition: symbolTracker.h:70
Contains makVrv::DtVirtualBaseClass class.
MyTimeStatistic()
Definition: symbolTracker.h:45
std::map< makVrv::DtElementID, makVrv::DtSignalConnectionManager * > myMadeConnection
Definition: symbolTracker.h:208
makVrv::DtUniqueID alwaysTrack() const
Definition: symbolTracker.h:99
makVrv::DtUniqueID myAlwaysTrack
Definition: symbolTracker.h:211
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:22
TrackingData(makVrv::DtModel *m=0, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *sv=0, const DtVector &pos=DtVector::zero())
Definition: symbolTracker.h:53
makVrv::DtCoordinateSystem & myCoordinateSystem
Definition: symbolTracker.h:206
std::map< makVrv::DtElementID, TrackingData > TrackingMap
Definition: symbolTracker.h:64
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtVrlinkSimulatedEntityState class.
TrackData myWaiting
Definition: symbolTracker.h:197
double myDistanceMoveTolerance
Definition: symbolTracker.h:210
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:41
TrackData myTrackingMap
Definition: symbolTracker.h:194
Base class to provide boost signal/slot management.
bool mySuspendForMovement
Definition: symbolTracker.h:204
DtTimedSection myLastMovement
Definition: symbolTracker.h:199
A model which owns a single model instance. A DtModel is a managing container for a single DtModelIns...
Definition: DtModel.h:55
bool mySuspended
Definition: symbolTracker.h:202
makVrv::DtDe & myDe
Definition: symbolTracker.h:189
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
DtVector lastSetPosition
Definition: symbolTracker.h:60
bool mySuspendedByMovement
Definition: symbolTracker.h:203
makVrv::DtSignalConnectionManager myConnectionManager
Definition: symbolTracker.h:192
std::vector< DtVector > myLinePoints
Definition: symbolTracker.h:190
DtTimedSection myTimer
Definition: symbolTracker.h:68
TrackingMap myMap
Definition: symbolTracker.h:71
TrackData myAt4s
Definition: symbolTracker.h:195

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)