VR-Forces 4.6 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/signal.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);
101  makVrv::DtUniqueID alwaysTrack() const
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::signal<void (DtVector geocentricPosition,
139 
141  boost::signal<void (DtVector geocentricPosition,
143 
145  boost::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
146 
148  boost::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 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)