VR-Forces 4.10 Class Documentation
 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>
18 
19 #include <vrvUtil/signalslib.h>
20 #include <vrvCore/Dt2DAreaFacade.h>
21 #include <vrvCore/DtEntityState.h>
24 
25 #include <vrfutil/rwUUID.h>
26 #include <boost/unordered_map.hpp>
27 
28 namespace makVrv
29 {
30  class DtSceneObject;
31  class DtAttachableUpdaterAgent;
32  class DtSimObjectEntry;
33  class DtLineFacadeBase;
34  class DtDe;
35 };
36 
37 namespace makVrf
38 {
39  class DtNetworkMessageInterface;
40  class DtAttackLineAttachableUpdaterAgent;
41  class DtVrfStateViewCollectionManager;
42  class DtVrfSimBackendManager;
43 
46 
48  {
49  public:
51  DtAttackLine(makVrv::DtDe& de, int modelSet, makVrv::DtElementID sourceId, makVrv::DtElementID targetId,
52  double wedgeSize);
53 
54  virtual ~DtAttackLine();
55 
57  virtual void setWedgeSize(double);
58 
60  DtAttackLineAttachableUpdaterAgent* updater()
61  {
62  return myUpdater;
63  };
64 
65  protected:
67  DtAttackLineAttachableUpdaterAgent* myUpdater;
68  double myWedgeSize;
70  };
71 
74  {
75  public:
77  virtual ~DtSupplyLine();
78 
79  virtual void setColor(float r, float g, float b, float a);
80  virtual void setVisible(bool);
81 
82  protected:
83  struct Supply
84  {
86  DtAttackLineAttachableUpdaterAgent* updater;
87  };
88 
89  typedef std::map<int, Supply> SupplyLines;
92  };
93 
97  {
98  public:
100  virtual ~DtInfluenceManager();
101 
103  static DtInfluenceManager& instance(makVrv::DtDe& de);
104 
106  virtual void registerInstance(makVrv::DtDe&, DtInfluenceManager*);
107 
109  virtual void setDisplayAttackLines(bool);
110  virtual bool displayAttackLines() const;
111 
113  virtual void setDisplayAttackAnimation(bool);
114  virtual bool displayAttackAnimation() const;
115 
117  virtual void setDisplaySupplyLines(bool);
118  virtual bool displaySupplyLines() const;
119 
122  virtual int animationColor(int baseColor) const;
123 
125  virtual bool isAttacking(makVrv::DtElementID) const;
126 
128  virtual bool underAttack(makVrv::DtElementID) const;
129 
131  virtual void setSupplyLineColor(int r, int g, int b, int a);
132  virtual void getSupplyLineColor(int& r, int& g, int& b, int& a);
133 
136  virtual void setAnimationLength(double);
137 
140  virtual std::set<int> sectorsAttacked(makVrv::DtElementID) const;
141 
143  virtual void setWedgeSize(double);
144  virtual double wedgeSize() const;
145 
146  typedef std::map<int, DtAttackLine*> AttackLines;
147  typedef std::map<std::string, DtInfluenceInteractionInterface> AttackTypes;
148 
151  {
154  };
155 
157  {
160  std::string attackType;
161 
162  bool operator<(const AttackIdentifier& rhs) const
163  {
164  return (attackerId < rhs.attackerId ||
165  (attackerId == rhs.attackerId && targetId < rhs.targetId) ||
166  (attackerId == rhs.attackerId && targetId == rhs.targetId && attackType < rhs.attackType));
167  }
168  };
169 
170  typedef std::set<makVrv::DtElementID> Supplying;
171  typedef std::map<makVrv::DtElementID, Supplying> Suppliers;
172 
173  typedef std::map<makVrv::DtElementID, AttackLineInformation> AttackTarget;
174  typedef std::map<makVrv::DtElementID, AttackTarget> Attacks;
175  typedef std::map<AttackIdentifier, double> AttackExpirations;
176 
178  virtual Attacks attackLinesFor(makVrv::DtElementID) const;
179 
181  virtual Attacks attackLinesTo(makVrv::DtElementID) const;
182 
184  virtual void clear();
185 
187  virtual void setMinimumInfluenceDuration(double);
188  virtual double minimumInfluenceDuration() const;
189 
191  virtual Supplying suppliersTo(makVrv::DtElementID) const;
192 
194  virtual Supplying supplies(makVrv::DtElementID) const;
195 
196  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded;
197  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved;
198 
199  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded;
200  boost::signals2::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved;
201 
202  protected:
204  virtual void processInfluenceMessageCallback(DtNetworkMessageInterface* i);
205 
209  virtual void createAttackLine(DtInfluenceInteractionInterface*);
210 
211  virtual void removeAttackLine(DtInfluenceInteractionInterface*);
212 
213  virtual void createSupplyLine(DtInfluenceInteractionInterface*);
214  virtual void removeSupplyLine(DtInfluenceInteractionInterface*);
215  virtual void removeSupplyLine(makVrv::DtElementID supplier, makVrv::DtElementID target);
216  virtual void removeSupplyLines(makVrv::DtElementID);
217  virtual void onStateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
218 
219  virtual void removeAttackLine(makVrv::DtElementID attacker, makVrv::DtElementID target,
220  const std::string& attackType);
221 
222  virtual void slot_extendedEntityOptionsChanged();
223 
224  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
225 
226  virtual void setupSceneObject(makVrv::DtElementID);
227 
228  virtual void slot_sceneObjectToBeDeleted( const makVrv::DtUniqueID& id );
229 
230  virtual void slot_removeExpiredAttacks();
231  virtual void slot_removeExpiredSupplies();
232 
233  virtual void processRangeRingsUpdated(DtNetworkMessageInterface* i);
234  virtual void addPendingInfluence(DtInfluenceInteractionInterface*, const DtUUID& uuid);
235 
236  virtual DtVrfSimBackendManager& backendManager() const;
237 
238  protected:
242 
244 
246 
248 
250  {
251  std::set<makVrv::DtElementID> underAttackBy;
252  };
253 
254  typedef std::map<makVrv::DtElementID, UnderAttackInformation> UnderAttack;
256 
259 
262 
264  {
265  boost::signals2::connection sceneObjectConnection;
267  };
268 
269  typedef std::map<makVrv::DtElementID, SceneObjectInformation> SceneObjects;
271 
272  double myWedgeSize;
274 
275  typedef std::map<makVrv::DtElementID, DtSupplyLine*> SupplyLine;
276  typedef std::map<makVrv::DtElementID, SupplyLine> SupplyLines;
277 
279 
282 
283  typedef std::map<makVrv::DtElementID, double> SupplierExpiration;
284  typedef std::map<makVrv::DtElementID, SupplierExpiration> SupplyExpirations;
286 
287  float mySupplyLineColor[4];
288 
290 
291  typedef boost::unordered_map<DtUUID, DtInfluenceInteractionInterface*> PendingInfluenceInteractions;
293  };
294 }
std::map< makVrv::DtElementID, UnderAttackInformation > UnderAttack
Definition: influenceManager.h:254
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
std::set< makVrv::DtElementID > Supplying
Definition: influenceManager.h:170
boost::unordered_map< DtUUID, DtInfluenceInteractionInterface * > PendingInfluenceInteractions
Definition: influenceManager.h:291
makVrv::DtElementID attackerId
Definition: influenceManager.h:158
std::map< makVrv::DtElementID, SceneObjectInformation > SceneObjects
Definition: influenceManager.h:269
makVrv::DtLineFacadeBase * supplyLine
Definition: influenceManager.h:85
Virtual base class.
Definition: DtVirtualBaseClass.h:19
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved
Definition: influenceManager.h:200
Definition: networkMessageInterface.h:28
SupplyExpirations mySupplyExpirations
Definition: influenceManager.h:285
double myAnimationLength
Definition: influenceManager.h:258
makVrv::DtDe & myDe
Definition: influenceManager.h:239
AttackExpirations myAttackExpirations
Definition: influenceManager.h:245
This class will be used to receive influence interactions and create or manage objects that will repr...
Definition: influenceManager.h:96
makVrv::DtElementID targetId
Definition: influenceManager.h:159
UnderAttack myUnderAttack
Definition: influenceManager.h:255
AttackTypes attackTypes
Attack lines by model set.
Definition: influenceManager.h:153
std::map< makVrv::DtElementID, Supplying > Suppliers
Definition: influenceManager.h:171
SupplyLines mySupplyLines
Definition: influenceManager.h:90
boost::signals2::connection sceneObjectConnection
Definition: influenceManager.h:265
std::map< makVrv::DtElementID, DtSupplyLine * > SupplyLine
Definition: influenceManager.h:275
makVrv::DtDe & myDe
Definition: influenceManager.h:91
std::map< makVrv::DtElementID, SupplierExpiration > SupplyExpirations
Definition: influenceManager.h:284
bool myDisplayAttackAnimation
Definition: influenceManager.h:241
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
Definition: influenceManager.h:263
std::map< makVrv::DtElementID, SupplyLine > SupplyLines
Definition: influenceManager.h:276
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded
Definition: influenceManager.h:196
double myMinimumInfluenceDuration
Definition: influenceManager.h:273
AttackLines attackLines
Definition: influenceManager.h:152
std::string attackType
Definition: influenceManager.h:160
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded
Definition: influenceManager.h:199
bool myDisplaySupplyLines
Definition: influenceManager.h:289
Suppliers mySuppliers
Definition: influenceManager.h:280
boost::signals2::signal< void(makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved
Definition: influenceManager.h:197
Contains makVrv::DtVirtualBaseClass class.
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:22
Contains DtLineFacadeBase class.
Definition: DtLineFacadeBase.h:31
std::map< makVrv::DtElementID, AttackLineInformation > AttackTarget
Definition: influenceManager.h:173
bool myDisplayAttackLines
Definition: influenceManager.h:240
Attacks myAttacks
Definition: influenceManager.h:243
This class will display a 2D representation of the attack line.
Definition: influenceManager.h:47
Definition: influenceManager.h:83
std::map< int, Supply > SupplyLines
Definition: influenceManager.h:89
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
SceneObjects mySceneObjects
Definition: influenceManager.h:270
Contains makVrv::DtEntityState class.
Creates the supply line and updated from source to target.
Definition: influenceManager.h:73
This class is the central point for looking up information about a particular object in the VRF GUI...
Definition: vrfStateViewCollectionManager.h:127
std::set< makVrv::DtElementID > underAttackBy
Definition: influenceManager.h:251
std::map< int, DtAttackLine * > AttackLines
Definition: influenceManager.h:146
std::map< AttackIdentifier, double > AttackExpirations
Definition: influenceManager.h:175
DtAttackLineAttachableUpdaterAgent * updater()
Updater for this line. Use to change margin, etc.
Definition: influenceManager.h:60
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
PendingInfluenceInteractions myPendingInfluenceInteractions
Definition: influenceManager.h:292
Definition: influenceManager.h:249
Base class to provide boost signal/slot management.
DtVrfStateViewCollectionManager & myCollectionManager
Definition: influenceManager.h:260
DtVrfSimBackendManager * myBackendManager
Definition: influenceManager.h:261
std::map< makVrv::DtElementID, double > SupplierExpiration
Definition: influenceManager.h:283
Suppliers mySupplied
Definition: influenceManager.h:281
Definition: influenceManager.h:156
double myWedgeSize
Definition: influenceManager.h:68
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:73
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:41
Structure defining a single attack line from source to target.
Definition: influenceManager.h:150
Contains Dt2DAreaFacade class.
Definition: Dt2DAreaFacade.h:20
bool operator<(const AttackIdentifier &rhs) const
Definition: influenceManager.h:162
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
double myWedgeSize
Definition: influenceManager.h:272
std::map< std::string, DtInfluenceInteractionInterface > AttackTypes
Definition: influenceManager.h:147
makVrv::DtSignalConnectionManager myConnectionManager
Definition: influenceManager.h:247
SupplyLines mySupplyLines
Definition: influenceManager.h:278
DtAttackLineAttachableUpdaterAgent * updater
Definition: influenceManager.h:86
makVrv::DtDe & myDe
Definition: influenceManager.h:69
double myAnimationStart
Definition: influenceManager.h:257
makVrv::DtSceneObject * sceneObject
Definition: influenceManager.h:266
Definition: influenceInteractionInterface.h:23
std::map< makVrv::DtElementID, AttackTarget > Attacks
Definition: influenceManager.h:174

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)