VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
influenceManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
12 
13 #pragma once
14 
15 #include <vrfGuiCore/vrfGuiCore.h>
19 
20 #include <vrvCore/DtEntityState.h>
23 
24 #include <vrfutil/rwUUID.h>
25 #include <boost/unordered_map.hpp>
26 
27 namespace makVrv
28 {
29  class DtSceneObject;
30  class DtAttachableUpdaterAgent;
31  class DtSimObjectEntry;
32  class DtDe;
33 };
34 
35 namespace makVrf
36 {
37  class DtNetworkMessageInterface;
38  class DtAttackLineAttachableUpdaterAgent;
39  class DtVrfStateViewCollectionManager;
40  class DtVrfSimBackendManager;
41  class DtLineFacadeBase;
42 
45 
47  {
48  public:
50  DtAttackLine(makVrv::DtDe& de, int modelSet, makVrv::DtElementID sourceId, makVrv::DtElementID targetId,
51  double wedgeSize);
52 
53  virtual ~DtAttackLine();
54 
56  virtual void setWedgeSize(double);
57 
59  DtAttackLineAttachableUpdaterAgent* updater()
60  {
61  return myUpdater;
62  };
63 
64  protected:
66  DtAttackLineAttachableUpdaterAgent* myUpdater;
67  double myWedgeSize;
69  };
70 
73  {
74  public:
76  virtual ~DtSupplyLine();
77 
78  virtual void setColor(float r, float g, float b, float a);
79  virtual void setVisible(bool);
80 
81  protected:
82  struct Supply
83  {
85  DtAttackLineAttachableUpdaterAgent* updater;
86  };
87 
88  typedef std::map<int, Supply> SupplyLines;
91  };
92 
96  {
97  public:
99  virtual ~DtInfluenceManager();
100 
102  static DtInfluenceManager& instance(makVrv::DtDe& de);
103 
105  virtual void registerInstance(makVrv::DtDe&, DtInfluenceManager*);
106 
108  virtual void setDisplayAttackLines(bool);
109  virtual bool displayAttackLines() const;
110 
112  virtual void setDisplayAttackAnimation(bool);
113  virtual bool displayAttackAnimation() const;
114 
116  virtual void setDisplaySupplyLines(bool);
117  virtual bool displaySupplyLines() const;
118 
121  virtual int animationColor(int baseColor) const;
122 
124  virtual bool isAttacking(makVrv::DtElementID) const;
125 
127  virtual bool underAttack(makVrv::DtElementID) const;
128 
130  virtual void setSupplyLineColor(int r, int g, int b, int a);
131  virtual void getSupplyLineColor(int& r, int& g, int& b, int& a);
132 
135  virtual void setAnimationLength(double);
136 
139  virtual std::set<int> sectorsAttacked(makVrv::DtElementID) const;
140 
142  virtual void setWedgeSize(double);
143  virtual double wedgeSize() const;
144 
145  typedef std::map<int, DtAttackLine*> AttackLines;
146  typedef std::map<std::string, DtInfluenceInteractionInterface> AttackTypes;
147 
150  {
153  };
154 
156  {
159  std::string attackType;
160 
161  bool operator<(const AttackIdentifier& rhs) const
162  {
163  return (attackerId < rhs.attackerId ||
164  (attackerId == rhs.attackerId && targetId < rhs.targetId) ||
165  (attackerId == rhs.attackerId && targetId == rhs.targetId && attackType < rhs.attackType));
166  }
167  };
168 
169  typedef std::set<makVrv::DtElementID> Supplying;
170  typedef std::map<makVrv::DtElementID, Supplying> Suppliers;
171 
172  typedef std::map<makVrv::DtElementID, AttackLineInformation> AttackTarget;
173  typedef std::map<makVrv::DtElementID, AttackTarget> Attacks;
174  typedef std::map<AttackIdentifier, double> AttackExpirations;
175 
177  virtual Attacks attackLinesFor(makVrv::DtElementID) const;
178 
180  virtual Attacks attackLinesTo(makVrv::DtElementID) const;
181 
183  virtual void clear();
184 
186  virtual void setMinimumInfluenceDuration(double);
187  virtual double minimumInfluenceDuration() const;
188 
190  virtual Supplying suppliersTo(makVrv::DtElementID) const;
191 
193  virtual Supplying supplies(makVrv::DtElementID) const;
194 
195  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded;
196  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved;
197 
198  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded;
199  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved;
200 
201  protected:
203  virtual void processInfluenceMessageCallback(DtNetworkMessageInterface* i);
204 
208  virtual void createAttackLine(DtInfluenceInteractionInterface*);
209 
210  virtual void removeAttackLine(DtInfluenceInteractionInterface*);
211 
212  virtual void createSupplyLine(DtInfluenceInteractionInterface*);
213  virtual void removeSupplyLine(DtInfluenceInteractionInterface*);
214  virtual void removeSupplyLine(makVrv::DtElementID supplier, makVrv::DtElementID target);
215  virtual void removeSupplyLines(makVrv::DtElementID);
216  virtual void onStateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
217 
218  virtual void removeAttackLine(makVrv::DtElementID attacker, makVrv::DtElementID target,
219  const std::string& attackType);
220 
221  virtual void slot_extendedEntityOptionsChanged();
222 
223  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
224 
225  virtual void setupSceneObject(makVrv::DtElementID);
226 
227  virtual void slot_sceneObjectToBeDeleted( const makVrv::DtUniqueID& id );
228 
229  virtual void slot_removeExpiredAttacks();
230  virtual void slot_removeExpiredSupplies();
231 
232  virtual void processRangeRingsUpdated(DtNetworkMessageInterface* i);
233  virtual void addPendingInfluence(DtInfluenceInteractionInterface*, const DtUUID& uuid);
234 
235  virtual DtVrfSimBackendManager& backendManager() const;
236 
237  protected:
241 
243 
245 
247 
249  {
250  std::set<makVrv::DtElementID> underAttackBy;
251  };
252 
253  typedef std::map<makVrv::DtElementID, UnderAttackInformation> UnderAttack;
255 
258 
261 
263  {
264  boost::signals2::connection sceneObjectConnection;
266  };
267 
268  typedef std::map<makVrv::DtElementID, SceneObjectInformation> SceneObjects;
270 
271  double myWedgeSize;
273 
274  typedef std::map<makVrv::DtElementID, DtSupplyLine*> SupplyLine;
275  typedef std::map<makVrv::DtElementID, SupplyLine> SupplyLines;
276 
278 
281 
282  typedef std::map<makVrv::DtElementID, double> SupplierExpiration;
283  typedef std::map<makVrv::DtElementID, SupplierExpiration> SupplyExpirations;
285 
286  float mySupplyLineColor[4];
287 
289 
290  typedef boost::unordered_map<DtUUID, DtInfluenceInteractionInterface*> PendingInfluenceInteractions;
292  };
293 }
std::map< makVrv::DtElementID, UnderAttackInformation > UnderAttack
Definition: influenceManager.h:253
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
std::set< makVrv::DtElementID > Supplying
Definition: influenceManager.h:169
boost::unordered_map< DtUUID, DtInfluenceInteractionInterface * > PendingInfluenceInteractions
Definition: influenceManager.h:290
makVrv::DtElementID attackerId
Definition: influenceManager.h:157
Contains DtLineFacadeBase class. Facade interface for constructing line objects.
Definition: lineFacadeBase.h:31
std::map< makVrv::DtElementID, SceneObjectInformation > SceneObjects
Definition: influenceManager.h:268
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved
Definition: influenceManager.h:199
Definition: networkMessageInterface.h:28
SupplyExpirations mySupplyExpirations
Definition: influenceManager.h:284
double myAnimationLength
Definition: influenceManager.h:257
makVrv::DtDe & myDe
Definition: influenceManager.h:238
AttackExpirations myAttackExpirations
Definition: influenceManager.h:244
This class will be used to receive influence interactions and create or manage objects that will repr...
Definition: influenceManager.h:95
makVrv::DtElementID targetId
Definition: influenceManager.h:158
UnderAttack myUnderAttack
Definition: influenceManager.h:254
AttackTypes attackTypes
Attack lines by model set.
Definition: influenceManager.h:152
std::map< makVrv::DtElementID, Supplying > Suppliers
Definition: influenceManager.h:170
SupplyLines mySupplyLines
Definition: influenceManager.h:89
boost::signals2::connection sceneObjectConnection
Definition: influenceManager.h:264
std::map< makVrv::DtElementID, DtSupplyLine * > SupplyLine
Definition: influenceManager.h:274
makVrv::DtDe & myDe
Definition: influenceManager.h:90
Contains the DtUUID class declaration.
std::map< makVrv::DtElementID, SupplierExpiration > SupplyExpirations
Definition: influenceManager.h:283
bool myDisplayAttackAnimation
Definition: influenceManager.h:240
makVrf::DtLineFacadeBase * supplyLine
Definition: influenceManager.h:84
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
Definition: influenceManager.h:262
std::map< makVrv::DtElementID, SupplyLine > SupplyLines
Definition: influenceManager.h:275
Contains Dt2DAreaFacade class. Facade interface for constructing 2D area objects. ...
Definition: 2DAreaFacade.h:20
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded
Definition: influenceManager.h:195
double myMinimumInfluenceDuration
Definition: influenceManager.h:272
AttackLines attackLines
Definition: influenceManager.h:151
std::string attackType
Definition: influenceManager.h:159
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded
Definition: influenceManager.h:198
bool myDisplaySupplyLines
Definition: influenceManager.h:288
Suppliers mySuppliers
Definition: influenceManager.h:279
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved
Definition: influenceManager.h:196
Contains makVrv::DtVirtualBaseClass class.
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:22
std::map< makVrv::DtElementID, AttackLineInformation > AttackTarget
Definition: influenceManager.h:172
bool myDisplayAttackLines
Definition: influenceManager.h:239
Attacks myAttacks
Definition: influenceManager.h:242
This class will display a 2D representation of the attack line. The attack line is a wedge that is dr...
Definition: influenceManager.h:46
Definition: influenceManager.h:82
std::map< int, Supply > SupplyLines
Definition: influenceManager.h:88
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
SceneObjects mySceneObjects
Definition: influenceManager.h:269
Contains makVrv::DtVrlinkSimulatedEntityState class.
Creates the supply line and updated from source to target.
Definition: influenceManager.h:72
This class is the central point for looking up information about a particular object in the VRF GUI...
Definition: vrfStateViewCollectionManager.h:139
std::set< makVrv::DtElementID > underAttackBy
Definition: influenceManager.h:250
std::map< int, DtAttackLine * > AttackLines
Definition: influenceManager.h:145
std::map< AttackIdentifier, double > AttackExpirations
Definition: influenceManager.h:174
DtAttackLineAttachableUpdaterAgent * updater()
Updater for this line. Use to change margin, etc.
Definition: influenceManager.h:59
PendingInfluenceInteractions myPendingInfluenceInteractions
Definition: influenceManager.h:291
Definition: influenceManager.h:248
Base class to provide boost signal/slot management.
DtVrfStateViewCollectionManager & myCollectionManager
Definition: influenceManager.h:259
DtVrfSimBackendManager * myBackendManager
Definition: influenceManager.h:260
std::map< makVrv::DtElementID, double > SupplierExpiration
Definition: influenceManager.h:282
Suppliers mySupplied
Definition: influenceManager.h:280
Definition: influenceManager.h:155
double myWedgeSize
Definition: influenceManager.h:67
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:77
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:42
Structure defining a single attack line from source to target.
Definition: influenceManager.h:149
bool operator<(const AttackIdentifier &rhs) const
Definition: influenceManager.h:161
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:70
double myWedgeSize
Definition: influenceManager.h:271
std::map< std::string, DtInfluenceInteractionInterface > AttackTypes
Definition: influenceManager.h:146
makVrv::DtSignalConnectionManager myConnectionManager
Definition: influenceManager.h:246
SupplyLines mySupplyLines
Definition: influenceManager.h:277
DtAttackLineAttachableUpdaterAgent * updater
Definition: influenceManager.h:85
makVrv::DtDe & myDe
Definition: influenceManager.h:68
double myAnimationStart
Definition: influenceManager.h:256
makVrv::DtSceneObject * sceneObject
Definition: influenceManager.h:265
Definition: influenceInteractionInterface.h:23
std::map< makVrv::DtElementID, AttackTarget > Attacks
Definition: influenceManager.h:173

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)