VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
emitterSystemSimDataProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
17 
20 #include <vl/globalObjectDesignator.h>
21 #include <vlutil/vlPerformanceStats.h>
22 
24 
25 namespace makVrv
26 {
27  class DtSimEntryObjectAgent;
28  class DtEntityStateListener;
29  class DtAggregateStateListener;
30 
31  namespace DT_PROTOCOL_NAMESPACE
32  {
33  class DtVrlinkConnection;
34  class DtVrlinkEmitterStateListener;
35  class DtEmitterSystemExistenceListener;
36  class DtEntityElementProcessor;
37  class DtAggregateElementProcessor;
38  }
39 }
40 
41 namespace makVrf
42 {
43  class DtVrlinkEmitterSystemStateObjectAgent;
44 
45  namespace VRF_PROTOCOL_NAMESPACE
46  {
49  {
50  public:
51 
53  {
54  std::vector<makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener*> myListeners;
55  DtVrlinkEmitterSystemStateObjectAgent* myAgent;
58  };
59 
62 
65 
66  static DtEmitterSystemSimDataProcessor* findInstance(
68  {
69  return dynamic_cast<DtEmitterSystemSimDataProcessor*>(
70  sim.findInstance("DtEmitterSystemSimDataProcessor"));
71  }
72 
73  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim,
75  {
76  sim.registerInstance("DtEmitterSystemSimDataProcessor",proc);
77  }
78 
80  void postDrainInput();
81 
83  void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
84 
86  virtual void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
87 
89  virtual void emitterSystemDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener* listener);
90 
92  virtual void emitterSystemToBeDeleted(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener* listener);
93 
94  virtual void entityToBeDeleted(makVrv::DtEntityStateListener& listener);
95  virtual void aggregateToBeDeleted(makVrv::DtAggregateStateListener& listener);
96 
98  virtual void createAndSendState(std::vector<makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener*>& listeners,
99  makVrv::DtUniqueID entityId, DtVrlinkEmitterSystemStateObjectAgent& objectAgent);
100  virtual void setState(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener& listener,
102  virtual void setState(DtVrlinkEmitterBeamState&, DtEmitterBeamRepository*);
103 
105  virtual makVrv::DtUniqueID mapHostIdToEntityUniqueId(const DtGlobalObjectDesignator& host,
106  const DtGlobalObjectDesignator& systemId, makVrv::DtUniqueID systemUniqueId) const;
107 
109  virtual bool setupCallbackAgentFor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEmitterStateListener* listener);
110 
111  virtual void removeUpdaterAgent(makVrv::DtUniqueID id);
112 
113  boost::signal<void (makVrv::DtUniqueID, DtVrlinkEmitterSystemState)> signal_stateAdded;
114 
115  protected:
116 
117  static void postDrainInput(void* usr);
118 
119  virtual void slot_entityElementCreated();
120  virtual void slot_aggregateElementCreated();
121 
122  protected:
123 
124  //A Listener and a driver which will be updated with it.
126  {
127  public:
128 
130 
132 
134 
135  //Are the updaters equal
136  bool operator==(const EmitterSystemStateUpdater& orig) const;
137 
139  void update(double timeT);
140 
141  protected:
144  };
145 
146  typedef std::set<makVrv::DtUniqueID> EmitterSystemIdList;
147 
148  typedef std::map<makVrv::DtUniqueID,EmitterSystemSimDataInstance > EmitterSystemAgentMap;
149 
151  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,EmitterSystemUpdaterGroup>
153 
154  protected:
155 
157 
160  DtTimedSection myTimer;
161  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
162 
166 
167  typedef std::map<makVrv::DtUniqueID, DtVrlinkEmitterSystems> StateMapBySystem;
169 
170  typedef std::map<makVrv::DtUniqueID, DtVrlinkEmitterSystems> StateMapByEntity;
174 
175  std::set<makVrv::DtUniqueID> myPendingListeners;
176  };
177 
179  {
180  public:
183 
185 
188  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& conn,
190 
192  };
193  }
194 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)