VR-Forces 4.2 Class Documentation
DtExtendedStateDataProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: DtExtendedStateDataProcessor.h,v $ $Revision: 1.2 $ $State: Exp $
7 ******************************************************************************/
8 
14 
15 #pragma once
16 
17 #include <vrfGuiCore/DtExtendedStateDataObjectAgent.hpp>
18 
19 #include <vrvVrl/vrvVrl.h>
20 
21 #include <vrvUtil/DtBalancedUpdater.h>
22 #include <vrvUtil/DtSignalConnectionManager.h>
23 #include <vrvCore/DtSimEntryObjectAgent.hpp>
24 #include <vrvCore/DtSimDataProcessorInterface.h>
25 
26 namespace makVrv
27 {
28  class DtStateListenerInterface;
31  class DtSimpleTypedDictionary;
32 
33  namespace DT_PROTOCOL_NAMESPACE
34  {
35  class DtVrlinkEnvironmentalStateListenerInterface;
36  }
37 }
38 
39 namespace makVrf
40 {
41  namespace VRF_PROTOCOL_NAMESPACE
42  {
43 
45  class DtExtendedStateDataProcessor : public makVrv::DtSimDataProcessorInterface
46  {
47  public:
48 
50  static DtExtendedStateDataProcessor* findInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
51 
53  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim,DtExtendedStateDataProcessor*);
54 
56  DtExtendedStateDataProcessor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
57 
60 
62  void postDrainInput();
63 
65  void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
66 
68  void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
69 
71  virtual void createAndSendState(makVrv::DtUniqueID id, makVrv::DtSimStateObjectAgent& objectDriver);
72 
76  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
77 
79  virtual bool hasStateFor(makVrv::DtUniqueID) const;
80 
82  virtual DtExtendedStateData stateFor(makVrv::DtUniqueID id) const;
83 
84  boost::signal<void (makVrv::DtUniqueID, DtExtendedStateData&) > signal_stateUpdated;
85 
86  protected:
87 
89  static void postDrainInput(void* usr);
90 
92  virtual void entityToBeDestroyed(makVrv::DtEntityStateListener&);
93  virtual void aggregateToBeDestroyed(makVrv::DtAggregateStateListener&);
94  virtual void environmentalToBeDestroyed(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface&);
95  virtual void itemToBeDestroyed(makVrv::DtUniqueID);
96 
97  protected:
98 
99  //A Listener and a driver which will be updated with it.
101  {
102  public:
103 
104  ExtendedStateDataUpdater(makVrv::DtUniqueID id, DtExtendedStateDataObjectAgent& driver,
105  DtExtendedStateDataProcessor& processor);
106 
108 
110 
111  //Are the updaters equal
112  bool operator==(const ExtendedStateDataUpdater& orig) const;
113 
115  void update(double timeT);
116 
117  protected:
118  makVrv::DtUniqueID myId;
119  DtExtendedStateDataObjectAgent* myObjectAgent;
121  };
122 
123  typedef std::vector<makVrv::DtUniqueID> ExtendedStateDataIdList;
124 
126  {
127  makVrv::DtUniqueID myId;
128  DtExtendedStateDataObjectAgent* myAgent;
129  makVrv::DtSimEntryUpdater::UpdateRate myRate;
131  };
132 
133  typedef std::map<makVrv::DtUniqueID,ExtendedStateDataInstance > ExtendedStateDataAgentMap;
134 
135  typedef makVrv::DtBalancedUpdater<ExtendedStateDataUpdater> ExtededStateDataUpdaterGroup;
136  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,ExtededStateDataUpdaterGroup>
138 
139  protected:
140 
141  makVrv::DtSignalConnectionManager myConnections;
142 
143  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& mySimulation;
144  DtTimedSection myTimer;
145  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
146 
150  };
151  }
152 }

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)