VR-Forces 4.2 Class Documentation
DtSymbolTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 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 <vrvUtil/DtSignalConnectionManager.h>
15 #include <vlutil/vlPerformanceStats.h>
16 
17 #include <vrvUtil/DtVirtualBaseClass.h>
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:
45  {
46  public:
48 
49  inline double sum() const { return mySum; };
50  };
51 
52  protected:
53  typedef std::pair<makVrv::DtModel*, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedEntityState>*> TrackingData;
54  typedef std::map<makVrv::DtElementID, TrackingData> TrackingMap;
55 
56  struct TrackData
57  {
58  DtTimedSection myTimer;
62  };
63 
64  public:
65  DtSymbolTracker(makVrv::DtDe&);
66  virtual ~DtSymbolTracker();
67 
70  virtual void setLinePoints(const std::vector<DtVector>&);
71 
74  virtual void setShowObjectsWithinRange(double);
75 
77  virtual void findAllInRange();
78 
81  virtual bool canTrack(makVrv::DtModel* model, double& range,
82  DtVector* retPosition = 0);
83 
86  virtual bool withinRange(const DtVector&, double& range) const;
87 
89  virtual void suspend();
90 
92  virtual void resume();
93 
95  virtual bool isSuspended() const;
96 
98  virtual DtVector geocentricPosition(makVrv::DtModel*) const;
99 
101  virtual void modelAboutToBeDestroyed(makVrv::DtModel*);
102 
105 
107  boost::signal<void (DtVector geocentricPosition, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedEntityState>*)> signal_trackingEntity;
108 
110  boost::signal<void (DtVector geocentricPosition, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedEntityState>*)> signal_trackingEntityUpdated;
111 
113  boost::signal<void (makVrv::DtElementID)> signal_stoppedTrackingEntity;
114 
116  boost::signal<void ()> signal_suspended;
118 
119  protected:
122  virtual void checkTracked();
123 
125  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
126  virtual void removeTrackedItem(makVrv::DtElementID);
127 
128 
131  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
132 
134  virtual void reset(TrackingMap&);
135 
137  virtual void updateRateForRange(makVrv::DtModel*, double range);
138 
140  virtual bool checkAndRemove(makVrv::DtElementID id, TrackingMap& map) const;
141 
143  virtual void tick();
144 
146  virtual makVrv::DtModel* findModelFor(makVrv::DtElementID) const;
147 
149  virtual void updateData(TrackData& data, bool tracked = false);
150 
152  virtual void checkWaiting();
153 
155  virtual makVrv::DtElementID simIdFromModel(makVrv::DtModel*) const;
156 
157  protected:
158  makVrv::DtDe& myDe;
159  std::vector<DtVector> myLinePoints;
160  double myRange;
161  makVrv::DtSignalConnectionManager myConnectionManager;
162 
167 
168  DtTimedSection myLastMovement;
170 
173 
174  makVrv::DtCoordinateSystem& myCoordinateSystem;
175 
176  std::map<makVrv::DtElementID, bool> myMadeConnection;
177  std::map<makVrv::DtModel*, makVrv::DtElementID> myModelToSimIdMap;
178  };
179 
181  class DT_DLL_VRFGUICORE DtSymbolTrackerCreator : public makVrv::DtVirtualBaseClass
182  {
183  public:
185  virtual ~DtSymbolTrackerCreator();
186 
188  static DtSymbolTrackerCreator& instance(makVrv::DtDe& de);
189  static void registerInstance(makVrv::DtDe&, DtSymbolTrackerCreator*);
190 
191  virtual DtSymbolTracker* create(makVrv::DtDe&);
192  };
193 
194 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)