VR-Forces 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>
13 
15 #include <vlutil/vlPerformanceStats.h>
16 
18 
19 #include <matrix/vlVector.h>
20 #include <vector>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtSimObjectEntry;
26  class DtSceneObject;
27  class DtCoordinateSystem;
28 }
29 
30 namespace makVrf
31 {
40  {
41  protected:
42  struct TrackingData
43  {
45  const DtVector& pos = DtVector::zero()) : model(m), stateView(sv), lastSetPosition(pos) {};
46  TrackingData(const TrackingData& orig) : model(orig.model), lastSetPosition(orig.lastSetPosition),
47  stateView(orig.stateView) {};
48 
49  makVrv::DtSceneObject* model;
50  DtVector lastSetPosition;
52  };
53 
54  typedef std::map<makVrv::DtElementID, TrackingData> TrackingMap;
55 
56  struct TrackData
57  {
58  DtTimedSection myTimer;
59  double myTotalTime = 0.;
62  };
63 
64  public:
66  virtual ~DtSymbolTracker();
67 
70  virtual void setLinePoints(const std::vector<DtVector>&);
71 
74  virtual void setShowObjectsWithinRange(double);
75 
77  virtual void findAllInRange();
78 
80  virtual void setSuspendForMovement(bool);
81  virtual bool suspendForMovement() const;
82 
84  virtual void setDistanceMoveTolerance(double);
85  virtual double distanceMoveTolerance() const;
86 
88  virtual void setAlwaysTrack(makVrv::DtUniqueID);
90  {
91  return myAlwaysTrack;
92  }
93 
96  virtual bool canTrack(makVrv::DtSceneObject*& model, double& range,
97  DtVector* retPosition = 0);
98 
101  virtual bool withinRange(const DtVector&, double& range) const;
102 
104  virtual void suspend();
105 
107  virtual void resume();
108 
110  virtual bool isSuspended() const;
111 
113  virtual DtVector geocentricPosition(makVrv::DtSceneObject*) const;
114 
116  virtual void modelAboutToBeDestroyed(makVrv::DtUniqueID);
117 
119  virtual void tickTrackedItems();
120 
123 
125  boost::signals2::signal<void (DtVector geocentricPosition, DtSimObjectReference)> signal_trackingEntity;
126 
128  boost::signals2::signal<void (DtVector geocentricPosition, DtSimObjectReference)> signal_trackingEntityUpdated;
129 
131  boost::signals2::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
132 
134  boost::signals2::signal<void ()> signal_suspended;
136 
137  protected:
140  virtual void checkTracked();
141 
143  virtual void slot_simObjectEntryAboutToBeRemoved(DtSimObjectReference e);
144  virtual void removeTrackedItem(makVrv::DtElementID);
145 
146  virtual bool watchModel(makVrv::DtSceneObject*);
147 
150  virtual void slot_simStateAdded(DtSimObjectReference e);
151 
153  virtual void reset(TrackingMap&);
154 
156  virtual void updateRateForRange(makVrv::DtSceneObject*, double range);
157 
159  virtual bool checkAndRemove(makVrv::DtElementID id, TrackingMap& map) const;
160 
162  virtual void tick();
163 
165  virtual makVrv::DtSceneObject* findModelFor(makVrv::DtElementID, makVrv::DtModelSetId modelSet) const;
166 
168  virtual void updateData(TrackData& data, bool tracked = false, bool force = false);
169 
171  virtual void checkWaiting();
172 
173  protected:
175  std::vector<DtVector> myLinePoints;
176  double myRange;
178 
183 
184  DtTimedSection myLastMovement;
186 
190 
192 
193  std::map<makVrv::DtElementID, makVrv::DtSignalConnectionManager*> myMadeConnection;
196  };
197 
200  {
201  public:
203  virtual ~DtSymbolTrackerCreator() override;
204 
206  static DtSymbolTrackerCreator& instance(makVrv::DtDe& de);
207  static void registerInstance(makVrv::DtDe&, DtSymbolTrackerCreator*);
208 
209  virtual DtSymbolTracker* create(makVrv::DtDe&);
210  };
211 
212 }
Contains makVrf::DtSymbolTracker class.
Definition: symbolTracker.h:39
int myLastMovementTime
Definition: symbolTracker.h:185
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:176
boost::signals2::signal< void()> signal_suspended
Signal when suspended.
Definition: symbolTracker.h:134
Definition: symbolTracker.h:42
DtSimObjectReference stateView
Definition: symbolTracker.h:51
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
static DtSimObjectReferenceTemplate nullReference()
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
TrackingData(const TrackingData &orig)
Definition: symbolTracker.h:46
Definition: symbolTracker.h:56
TrackData myAt8s
Definition: symbolTracker.h:181
!!!!!!!! Creator
Definition: symbolTracker.h:199
boost::signals2::signal< void(makVrv::DtElementID)> signal_stoppedTrackingEntity
Sent when a track entity is stopped from being tracked.
Definition: symbolTracker.h:131
double myTimeoutPeriod
Definition: symbolTracker.h:60
Contains makVrv::DtVirtualBaseClass class.
std::map< makVrv::DtElementID, makVrv::DtSignalConnectionManager * > myMadeConnection
Definition: symbolTracker.h:193
makVrv::DtUniqueID alwaysTrack() const
Definition: symbolTracker.h:89
boost::signals2::signal< void(DtVector geocentricPosition, DtSimObjectReference)> signal_trackingEntityUpdated
Sent when a tracked entity is updated.
Definition: symbolTracker.h:128
makVrv::DtUniqueID myAlwaysTrack
Definition: symbolTracker.h:195
makVrv::DtCoordinateSystem & myCoordinateSystem
Definition: symbolTracker.h:191
std::map< makVrv::DtElementID, TrackingData > TrackingMap
Definition: symbolTracker.h:54
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
TrackData myWaiting
Definition: symbolTracker.h:182
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
double myDistanceMoveTolerance
Definition: symbolTracker.h:194
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
TrackData myTrackingMap
Definition: symbolTracker.h:179
Base class to provide boost signal/slot management.
TrackingData(makVrv::DtSceneObject *m=0, DtSimObjectReference sv=DtSimObjectReference::nullReference(), const DtVector &pos=DtVector::zero())
Definition: symbolTracker.h:44
boost::signals2::signal< void(DtVector geocentricPosition, DtSimObjectReference)> signal_trackingEntity
Signals sent for entity tracking changes.
Definition: symbolTracker.h:125
bool mySuspendForMovement
Definition: symbolTracker.h:189
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:44
DtTimedSection myLastMovement
Definition: symbolTracker.h:184
bool mySuspended
Definition: symbolTracker.h:187
makVrv::DtDe & myDe
Definition: symbolTracker.h:174
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:76
DtVector lastSetPosition
Definition: symbolTracker.h:50
DtModelSetId
Definition: DtModelSetEnums.h:19
bool mySuspendedByMovement
Definition: symbolTracker.h:188
makVrv::DtSignalConnectionManager myConnectionManager
Definition: symbolTracker.h:177
std::vector< DtVector > myLinePoints
Definition: symbolTracker.h:175
DtTimedSection myTimer
Definition: symbolTracker.h:58
TrackingMap myMap
Definition: symbolTracker.h:61
TrackData myAt4s
Definition: symbolTracker.h:180

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)