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>
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 DtSceneObject;
27  class DtCoordinateSystem;
28 }
29 
30 namespace makVrf
31 {
40  {
41  protected:
42  struct TrackingData
43  {
46  const DtVector& pos = DtVector::zero()) : model(m), stateView(sv), lastSetPosition(pos) {};
47  TrackingData(const TrackingData& orig) : model(orig.model), lastSetPosition(orig.lastSetPosition),
48  stateView(orig.stateView) {};
49 
50  makVrv::DtSceneObject* model;
53  };
54 
55  typedef std::map<makVrv::DtElementID, TrackingData> TrackingMap;
56 
57  struct TrackData
58  {
60  double myTotalTime = 0.;
63  };
64 
65  public:
67  virtual ~DtSymbolTracker();
68 
71  virtual void setLinePoints(const std::vector<DtVector>&);
72 
75  virtual void setShowObjectsWithinRange(double);
76 
78  virtual void findAllInRange();
79 
81  virtual void setSuspendForMovement(bool);
82  virtual bool suspendForMovement() const;
83 
85  virtual void setDistanceMoveTolerance(double);
86  virtual double distanceMoveTolerance() const;
87 
89  virtual void setAlwaysTrack(makVrv::DtUniqueID);
91  {
92  return myAlwaysTrack;
93  }
94 
97  virtual bool canTrack(makVrv::DtSceneObject*& model, double& range,
98  DtVector* retPosition = 0);
99 
102  virtual bool withinRange(const DtVector&, double& range) const;
103 
105  virtual void suspend();
106 
108  virtual void resume();
109 
111  virtual bool isSuspended() const;
112 
114  virtual DtVector geocentricPosition(makVrv::DtSceneObject*) const;
115 
117  virtual void modelAboutToBeDestroyed(makVrv::DtUniqueID);
118 
120  virtual void tickTrackedItems();
121 
124 
126  boost::signals2::signal<void (DtVector geocentricPosition,
128 
130  boost::signals2::signal<void (DtVector geocentricPosition,
132 
134  boost::signals2::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
135 
137  boost::signals2::signal<void ()> signal_suspended;
139 
140  protected:
143  virtual void checkTracked();
144 
146  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
147  virtual void removeTrackedItem(makVrv::DtElementID);
148 
149  virtual bool watchModel(makVrv::DtSceneObject*);
150 
153  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
154 
156  virtual void reset(TrackingMap&);
157 
159  virtual void updateRateForRange(makVrv::DtSceneObject*, double range);
160 
162  virtual bool checkAndRemove(makVrv::DtElementID id, TrackingMap& map) const;
163 
165  virtual void tick();
166 
168  virtual makVrv::DtSceneObject* findModelFor(makVrv::DtElementID, makVrv::DtModelSetId modelSet) const;
169 
171  virtual void updateData(TrackData& data, bool tracked = false, bool force = false);
172 
174  virtual void checkWaiting();
175 
176  protected:
178  std::vector<DtVector> myLinePoints;
179  double myRange;
181 
186 
189 
193 
195 
196  std::map<makVrv::DtElementID, makVrv::DtSignalConnectionManager*> myMadeConnection;
199  };
200 
203  {
204  public:
206  virtual ~DtSymbolTrackerCreator();
207 
209  static DtSymbolTrackerCreator& instance(makVrv::DtDe& de);
210  static void registerInstance(makVrv::DtDe&, DtSymbolTrackerCreator*);
211 
212  virtual DtSymbolTracker* create(makVrv::DtDe&);
213  };
214 
215 }
Contains makVrf::DtSymbolTracker class.
Definition: symbolTracker.h:39
int myLastMovementTime
Definition: symbolTracker.h:188
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
TrackingData(makVrv::DtSceneObject *m=0, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *sv=0, const DtVector &pos=DtVector::zero())
Definition: symbolTracker.h:44
double myRange
Definition: symbolTracker.h:179
boost::signals2::signal< void()> signal_suspended
Signal when suspended.
Definition: symbolTracker.h:137
const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > * stateView
Definition: symbolTracker.h:52
Definition: symbolTracker.h:42
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntity
Signals sent for entity tracking changes.
Definition: symbolTracker.h:127
#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:23
TrackingData(const TrackingData &orig)
Definition: symbolTracker.h:47
boost::signals2::signal< void(DtVector geocentricPosition, const makVrv::DtStateView< makVrv::DtVrlinkSimulatedEntityState > *)> signal_trackingEntityUpdated
Sent when a tracked entity is updated.
Definition: symbolTracker.h:131
Definition: symbolTracker.h:57
TrackData myAt8s
Definition: symbolTracker.h:184
!!!!!!!! Creator
Definition: symbolTracker.h:202
boost::signals2::signal< void(makVrv::DtElementID)> signal_stoppedTrackingEntity
Sent when a track entity is stopped from being tracked.
Definition: symbolTracker.h:134
double myTimeoutPeriod
Definition: symbolTracker.h:61
Contains makVrv::DtVirtualBaseClass class.
std::map< makVrv::DtElementID, makVrv::DtSignalConnectionManager * > myMadeConnection
Definition: symbolTracker.h:196
makVrv::DtUniqueID alwaysTrack() const
Definition: symbolTracker.h:90
makVrv::DtUniqueID myAlwaysTrack
Definition: symbolTracker.h:198
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:22
makVrv::DtCoordinateSystem & myCoordinateSystem
Definition: symbolTracker.h:194
std::map< makVrv::DtElementID, TrackingData > TrackingMap
Definition: symbolTracker.h:55
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtVrlinkSimulatedEntityState class.
TrackData myWaiting
Definition: symbolTracker.h:185
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
double myDistanceMoveTolerance
Definition: symbolTracker.h:197
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
TrackData myTrackingMap
Definition: symbolTracker.h:182
Base class to provide boost signal/slot management.
bool mySuspendForMovement
Definition: symbolTracker.h:192
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:187
bool mySuspended
Definition: symbolTracker.h:190
makVrv::DtDe & myDe
Definition: symbolTracker.h:177
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:72
DtVector lastSetPosition
Definition: symbolTracker.h:51
DtModelSetId
Definition: DtModelSetEnums.h:19
bool mySuspendedByMovement
Definition: symbolTracker.h:191
makVrv::DtSignalConnectionManager myConnectionManager
Definition: symbolTracker.h:180
std::vector< DtVector > myLinePoints
Definition: symbolTracker.h:178
DtTimedSection myTimer
Definition: symbolTracker.h:59
TrackingMap myMap
Definition: symbolTracker.h:62
TrackData myAt4s
Definition: symbolTracker.h:183

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)