VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
entityFacadeCollection.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrfGuiCore/vrfGuiCore.h>
15 
20 #include <vrvUtil/DtUnicode.h>
21 #include <vrvCore/DtForceManager.h>
23 
24 #include <matrix/vlVector.h>
25 #include <matrix/vlTaitBryan.h>
26 
27 #include <string>
28 #include <map>
29 
30 class DtEntityType;
31 class DtRwColor;
32 
33 namespace makVrv
34 {
35 
36  class DtVisualDefinitionSet;
37  class DtAgentManagerInterface;
38  class DtDe;
39  class DtStatePropertyDecorationVisualizer;
40  class DtBaseConnection;
41  class DtEntityElement;
42 }
43 
44 namespace makVrf
45 {
46 
47  class DtBoundingVolumeSupportPointCalculator;
48 
50  {
51  public:
54 
55  void setIsAggregate(bool b);
56  virtual void setAggregateColorizedModelColorType(makVrv::DtColorizedModelColorType colorType) override;
57  virtual void updateForceColor() override;
58 
59  protected:
61  };
62 
68  {
69  public:
70  typedef std::map<int, makVrv::DtVisualizerSet*> ModelSetMap;
71 
72  public:
73  DtEntityFacadeCollection(makVrv::DtDe&, int modelSet = -1);
74  virtual ~DtEntityFacadeCollection();
75 
76  public:
78 
80  virtual void visualize( const makVrv::DtUnicode& type,
82 
84  {
85  return myEntityElement;
86  }
87 
88  virtual bool isVisualized() const;
89 
91  virtual void setupNodeMaskFlags() const;
92 
94  virtual void setSetupNodeMaskFlags(bool);
95 
99  virtual std::map<int, std::vector<int> > modelStates(int modelSet) const;
100 
103  virtual std::vector<int> artParts(int modelSet) const;
104 
106  virtual void enableArtPart(int modelSet, int artPart, bool enable, const DtVector& translationRate = DtVector::zero(),
107  const DtVector& rotationalRate = DtVector::zero());
108 
109  virtual void enableArtPartTranslation(int modelSet, int artPart, bool enable,
110  const DtVector& translationRate = DtVector::zero(), const DtVector& minTranslation = DtVector::zero(),
111  const DtVector& maxTranslation = DtVector::zero());
112 
113  virtual void enableArtPartRotation(int modelSet, int artPart, bool enable,
114  const DtVector& rotationRate = DtVector::zero(), const DtVector& minRotation = DtVector::zero(),
115  const DtVector& maxRotation = DtVector::zero());
116 
118  virtual void getArtPartInformation(int modelSet, int artPart, DtVector& minRotation, DtVector& maxRotation, DtVector& minTranslation, DtVector& maxTranslation);
119 
122  virtual void setModelState(int modelSet, int, int);
123 
125  virtual void setTopographicOrientation(const DtTaitBryan& orientation);
126 
127  virtual void setTopographicOffsetFromPrincipal(const DtVector&, bool resetLocation = true);
128 
130  virtual void setLocalOrientation(const DtTaitBryan& orientation);
131 
133  virtual void setOrigin(const DtVector& v);
134  virtual void setOrigin(const DtGeodeticCoord& v);
135 
137  virtual void setOriginAndSeaLevel(const DtVector& v);
138  virtual void setOriginAndSeaLevel(const DtGeodeticCoord& v);
139 
140  virtual void ignoreVisualTypeSwitch(int, bool);
141 
142  virtual bool hasOccupant() const;
143 
144  virtual void setDropShadow(bool b);
145  virtual void setAltitudeOffsetFromPrincipal( double offset, bool resetLocation = true );
146 
148  virtual void setForceType(DtForceType);
149  DtForceType forceType() const;
150  virtual bool hasForceChange() const;
151 
153  virtual double initialAltitudeAboveTerrain() const;
154 
155  virtual makVrv::DtBaseConnection& baseConnection() const;
156 
158  void setHatLineVisible( bool visible );
159 
161  void setTrackHistoryVisible( bool visible );
162 
164  virtual void setVisible(bool, makVrv::DtShowHideContext::ShowHideContext context, bool updateOffsets = true) override;
165  virtual bool isVisible() const override;
166 
168  virtual void setUseHighestTerrainLod(bool);
169 
171  virtual void setPickable(bool b);
172 
174  virtual void setSelected(bool b);
175 
177  virtual void setLabel(const std::string& label);
178  virtual std::string label() const;
179  virtual bool hasLabelChange() const;
180 
182  virtual void setupVisualMetaDataFor(bool skipVariants = false);
183 
185  virtual void setExtendedLabels(const std::map<int, DtString>& labels);
186  virtual std::map<int, DtString> extendedLabels() const;
187  virtual bool hasExtendedLabelsChange() const;
188 
190  virtual void setOverlayName(const std::string&);
191  virtual std::string overlayName() const;
192 
194  virtual void setIndicatorVisible(bool b);
195 
197  virtual Dt3dBoundingVolume boundingVolume(int modelSet = 0) const;
198 
200  virtual void calculateSupportPoints(int modelSet, DtVector& left, DtVector& right, DtVector& other) const;
201 
203  virtual void setAttachedTo(DtVrfObjectFacadeInterface*, const DtVector& offset, const DtTaitBryan&);
204  virtual void detach();
205 
206  virtual makVrv::DtUniqueID uniqueID() const;
207  virtual std::vector<makVrv::DtUniqueID> modelUniqueIDs() const;
208 
209  virtual void clearMarkingsModified();
210  virtual bool markingsModified() const;
211 
213  virtual void setMarkingDecal(const std::string& annotation, const std::string& value);
214  virtual std::string markingDecal(const std::string& annotation) const;
215  const std::map<std::string, std::string>& markingDecalMap() const
216  {
217  return myMarkingDecals;
218  }
219 
220  virtual void clearMarkingDecals();
221 
223  virtual bool hasMultipleLODs(int modelSet = 0) const;
224 
226  virtual void setWidgetEventsEnabled(bool b);
227 
229  virtual void setGroundClamping(bool b);
230  virtual void setDeadReckoning(bool position, bool velocity, bool orientation);
231 
233  virtual void setSymbolDecorationOffset(double x, double y);
234 
236  virtual void setFixedIconScalingEnabled(bool);
237 
239  virtual void realizeFacades();
240 
243  virtual void unrealizeFacades(bool willRecreate = false);
244 
247  virtual void setDictionaryToDisplay(int);
248  bool dictionaryToDisplay() const { return myDictionaryToDisplay; };
249 
252  virtual bool hasProjectedModel(int modelSet) const;
253 
257  virtual void setElementDefinition(const makVrv::DtUnicode& elementName);
258 
260  virtual const makVrv::DtUnicode& elementDefinition() const;
261 
264  virtual void setElementDefinition(const DtEntityType&);
265 
267  void setSmoothingEnabled(bool enabled);
268 
270  void setMotionModel(const std::string&);
271 
273  virtual void setLabelIndicatorVisible(bool);
274 
276  virtual void setHeadingIndicatorVisible(bool);
277 
279  virtual void setHeadingIndicatorSize(float l);
280 
282  virtual bool isDiGuy() const { return myIsDiGuy; };
283 
285  virtual DtVector position() const;
286 
287  virtual makVrv::DtUniqueID uniqueIDForModelSet(int set) const;
288 
290  virtual void setEffectsVisible(bool);
291 
293  virtual bool shouldEnableTrailEffects() const;
294 
296  virtual void enableTrailEffect(bool);
297 
300  virtual void setAltitudeAboveTerrain(double d);
301 
304  virtual void setAltitudeAboveSeaLevel(double d);
305 
307  virtual bool hasWakeModel(int set);
308  virtual void setWakeLOD(double);
309  virtual void setShowWakes(bool b, int modelSet = -1);
310 
311  virtual void setShowSmoke(bool b, int modelSet = -1);
312  virtual void setShowFlames(bool b, int modelSet = -1);
313 
314  virtual void setShowOccupants(bool b);
315 
316  virtual const DtVector32& velocity() const;
317  virtual void setVelocity(const DtVector32& v);
318 
320  template <typename T> bool hasVisualizer() const
321  {
322  std::vector<T> vis;
323  return visualizers(vis);
324  }
325 
326  template <typename T> bool visualizers(std::vector<T>& vis) const
327  {
328  if (!myEntityElement)
329  {
330  return false;
331  }
332  myEntityElement->findVisualizersByDynamicCast(vis);
333  return (!vis.empty());
334  }
335 
337  virtual void setIconScale(float);
338  template <typename T> void setIconScale(float scale)
339  {
340  std::vector<T> visualizers;
341  myEntityElement->findVisualizersByDynamicCast(visualizers);
342  typename std::vector<T>::iterator i = visualizers.begin();
343  typename std::vector<T>::iterator e = visualizers.end();
344  for(;i != e; ++i)
345  {
346  if (*i)
347  {
348  (*i)->setIconScale(scale);
349  }
350  }
351  }
352 
353  virtual void setExtendedData(const std::map<std::string, std::string>&);
354  virtual std::map<std::string, std::string> extendedData() const;
355 
357  virtual void setEntityExtents(const DtVector& volume, const DtVector& offset);
358 
360  virtual bool hasBoundingVolumes() const;
361 
363  virtual void setEntityExtentsVisible(bool, int modelSet = -1);
364  template <typename T> void setEntityExtentsVisible(bool b, int modelSet = -1)
365  {
366  std::vector<T> visualizers;
367  myEntityElement->findVisualizersByDynamicCast(visualizers);
368  typename std::vector<T>::iterator i = visualizers.begin();
369  typename std::vector<T>::iterator e = visualizers.end();
370  for(;i != e; ++i)
371  {
372  if (*i)
373  {
374  if ((modelSet == -1) || (modelSet == (*i)->modelSet()))
375  {
376  (*i)->setShowExtentsEnabled(b);
377  }
378  }
379  }
380  }
381 
382  template <typename T> void setScale(float scale)
383  {
384  std::vector<T> visualizers;
385  myEntityElement->findVisualizersByDynamicCast(visualizers);
386  typename std::vector<T>::iterator i = visualizers.begin();
387  typename std::vector<T>::iterator e = visualizers.end();
388  for(;i != e; ++i)
389  {
390  if (*i)
391  {
392  (*i)->setScale(scale);
393  }
394  }
395  }
396 
397  template <typename T> void setColor( makVrv::DtForceManager::RGBAColor color)
398  {
399  std::vector<T> visualizers;
400  myEntityElement->findVisualizersByDynamicCast(visualizers);
401  typename std::vector<T>::iterator i = visualizers.begin();
402  typename std::vector<T>::iterator e = visualizers.end();
403  for(;i != e; ++i)
404  {
405  if (*i)
406  {
407  (*i)->setColor(color.R, color.G, color.B, color.A);
408  }
409  }
410  }
411 
412  virtual void setForceColor(const DtRwColor&);
413  void setBoundingExtentColor(float r, float g, float b, float a);
414 
416  virtual std::string diGuyCharacter() const;
417 
419  virtual std::string diGuyAppearance() const;
420 
422  virtual std::string diGuyHandItem() const;
424  virtual std::string diGuyHead() const;
425 
427  virtual void setAppearance(int);
428  virtual DtAppearance appearance() const;
429 
430  virtual void setLifeFormState(unsigned int, bool paused = false);
431  virtual void setCharacterWeaponAiming(bool aiming);
432  virtual void setEnableAnimationSmoothing(bool);
433  virtual void setCharacterAction(const std::string& animation, bool paused = false);
434  virtual const std::string& characterAction() const;
435 
436  virtual void setCharacterModel(const std::string& animation);
437  virtual std::string characterModel() const;
438 
439  virtual void setCharacterBodyWeight(double);
440  virtual void setCharacterAlive(bool);
441 
442  virtual void setCharacterAppearance(const std::string& animation);
443  virtual void setCharacterHandItem(const std::string& item);
444  virtual void setCharacterHead(const std::string& head);
445 
446  virtual void setCharacterPrimaryUnit( const DtPatchIdentifier& patchId );
447  virtual void setCharacterSecondaryUnit( const DtPatchIdentifier& patchId );
448  virtual void setCharacterRank( const DtPatchIdentifier& patchId );
449  virtual void setCharacterName( const DtString& patchId );
450 
452  virtual void setDisplayName( const std::string& displayName );
453 
455  virtual void setSymbolNameVisible(bool);
456 
458  virtual void setStatePropertyDecorationsVisible(bool);
459 
460  virtual void setSymbolDecorationsVisible(bool);
461 
462  virtual bool isAggregate() const
463  {
464  return myIsAggregate;
465  }
466 
468  virtual void finalizeSetup();
469 
471  virtual void updateSymbolRotation(const DtTaitBryan&);
472 
474  virtual void updateSymbolRotation(double);
475 
477  virtual void setRotateToHeading(bool);
478  bool rotateToHeading() const
479  {
480  return myRotateToHeading;
481  }
482 
483  virtual void slot_visualizerCreationDisabled( int modelSet, int visualType );
484  virtual void slot_visualizerCreationEnabled( int modelSet, int visualType );
485 
486  boost::signals2::signal<void (DtEntityFacadeCollection*)> signal_orientationChanged;
487 
488  boost::signals2::signal<void (std::string, std::string)> signal_markingDecalSet;
489 
493  boost::signals2::signal<void ()> signal_startOfMarkingDecalSet;
494  boost::signals2::signal<void ()> signal_endOfMarkingDecalSet;
495 
496  protected:
499 
502 
507 
508  std::string myOverlay;
513  DtForceType myForceType;
515 
516  std::string myDiGuyAppearance;
517  std::string myDiGuyHandItem;
518  std::string myDiGuyHead;
519  DtPatchIdentifier myDiGuyPrimaryUnitPatch;
520  DtPatchIdentifier myDiGuySecondaryUnitPatch;
521  DtPatchIdentifier myDiGuyRankPatch;
522  std::string myDiGuyCharacterName;
523  std::string myCharacterAction;
524  std::string myCharacterModel;
527 
528  bool myIsDiGuy;
542 
543  typedef std::map<int, std::map<int, int> > ActivatedStates;
545 
547 
549 
551  boost::signals2::connection myFinalizeConnection;
552 
553  std::map<std::string, std::string> myMarkingDecals;
554  std::map<int, std::map<int, bool> > myEffectsShown;
555 
557  };
558 
560  {
561  public:
564 
566  static DtEntityFacadeCollectionCreator& instance(makVrv::DtDe& de);
567  static void registerInstance(makVrv::DtDe&, DtEntityFacadeCollectionCreator*);
568 
569  virtual DtEntityFacadeCollection* create(int modelSet = -1);
570 
571  protected:
573  };
574 }
575 
std::string myOverlay
Definition: entityFacadeCollection.h:508
Contains makVrv:DtAggregateStateListener class.
boost::signals2::signal< void(std::string, std::string)> signal_markingDecalSet
Definition: entityFacadeCollection.h:488
const std::map< std::string, std::string > & markingDecalMap() const
Definition: entityFacadeCollection.h:215
std::string myDiGuyHead
Definition: entityFacadeCollection.h:518
ActivatedStates myActivatedStates
Definition: entityFacadeCollection.h:544
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
Definition: entityFacadeCollection.h:49
std::string myDiGuyHandItem
Definition: entityFacadeCollection.h:517
bool myEnableAnimationSmoothing
Definition: entityFacadeCollection.h:533
bool myEntityExtentsVisible
Definition: entityFacadeCollection.h:538
Contains makVrv::DtEntityElement class.
Definition: DtForceManager.h:44
double myDiGuyBodyWeight
Definition: entityFacadeCollection.h:525
std::string myDiGuyAppearance
Definition: entityFacadeCollection.h:516
The DtAggregateStateListener extends DtEntityStateListener. It provides a interface to all the visual...
Definition: DtAggregateStateListener.h:33
ShowHideContext
Definition: DtShowHideContext.h:18
bool myForceChanged
Definition: entityFacadeCollection.h:512
DtPatchIdentifier myDiGuyPrimaryUnitPatch
Definition: entityFacadeCollection.h:519
std::map< int, std::map< int, bool > > myEffectsShown
Definition: entityFacadeCollection.h:554
int myAttributeCompareValue
Definition: entityFacadeCollection.h:540
DtColorizedModelColorType
Enumeration for the model coloring mode.
Definition: DtSharedEntityDisplaySettings.h:34
void setEntityExtentsVisible(bool b, int modelSet=-1)
Definition: entityFacadeCollection.h:364
bool rotateToHeading() const
Definition: entityFacadeCollection.h:478
bool myHasExtendedLabelsChange
Definition: entityFacadeCollection.h:511
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
bool myUseHighestTerrainLOD
Definition: entityFacadeCollection.h:534
bool myHatLinesVisible
Definition: entityFacadeCollection.h:532
bool myTrackHistoryVisible
Definition: entityFacadeCollection.h:536
DtPatchIdentifier myDiGuySecondaryUnitPatch
Definition: entityFacadeCollection.h:520
bool mySetupNodeMaskFlags
Definition: entityFacadeCollection.h:500
bool myHasLabelChange
Definition: entityFacadeCollection.h:510
makVrv::DtEntityElement * entityElement()
Definition: entityFacadeCollection.h:83
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:39
DtExtAggregateStateListener * myListener
Aggregate is also an entity state listener, so, it can be used.
Definition: entityFacadeCollection.h:505
boost::signals2::connection myFinalizeConnection
Definition: entityFacadeCollection.h:551
DtForceType myForceType
Definition: entityFacadeCollection.h:513
int myDictionaryToDisplay
Definition: entityFacadeCollection.h:539
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
Definition: entityStateListenerExtensions.h:81
Contains makVrv::DtSharedModelSetSettings class.
std::map< int, makVrv::DtVisualizerSet * > ModelSetMap
Definition: entityFacadeCollection.h:70
std::string myCharacterModel
Definition: entityFacadeCollection.h:524
std::map< std::string, std::string > myMarkingDecals
Definition: entityFacadeCollection.h:553
Definition: vrfObjectFacadeInterface.h:53
std::string myCharacterAction
Definition: entityFacadeCollection.h:523
float B
Definition: DtForceManager.h:56
bool myNeedsRealization
Definition: entityFacadeCollection.h:530
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::string myDiGuyCharacterName
Definition: entityFacadeCollection.h:522
bool visualizers(std::vector< T > &vis) const
Definition: entityFacadeCollection.h:326
bool hasVisualizer() const
Returns true if has the visualizer.
Definition: entityFacadeCollection.h:320
bool myIsAggregate
Definition: entityFacadeCollection.h:60
float R
Definition: DtForceManager.h:56
virtual ~DtExtAggregateStateListener()
Definition: entityFacadeCollection.h:53
void setScale(float scale)
Definition: entityFacadeCollection.h:382
bool dictionaryToDisplay() const
Definition: entityFacadeCollection.h:248
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:32
int myAppearance
Definition: entityFacadeCollection.h:514
Will create entity facades for each realized model set and manage them all.
Definition: entityFacadeCollection.h:67
Contains makVrv:DtBaseConnection class.
Contains makVrv::DtForceManager class.
makVrv::DtEntityElement * myEntityElement
Definition: entityFacadeCollection.h:506
boost::signals2::signal< void()> signal_startOfMarkingDecalSet
These signals are needed because of variants/subvariants and not knowing in which order they are bein...
Definition: entityFacadeCollection.h:493
bool myIsDiGuy
Definition: entityFacadeCollection.h:528
bool mySymbolNameVisible
Definition: entityFacadeCollection.h:537
bool myOriginSet
Definition: entityFacadeCollection.h:529
float G
Definition: DtForceManager.h:56
float A
Definition: DtForceManager.h:56
void setColor(makVrv::DtForceManager::RGBAColor color)
Definition: entityFacadeCollection.h:397
Definition: entityFacadeCollection.h:559
makVrv::DtBaseConnection * myConnection
Definition: entityFacadeCollection.h:501
boost::signals2::signal< void(DtEntityFacadeCollection *)> signal_orientationChanged
Definition: entityFacadeCollection.h:486
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
DtBoundingVolumeSupportPointCalculator * myBVSPCalculator
Definition: entityFacadeCollection.h:546
bool myHeadingIndicatorVisible
Definition: entityFacadeCollection.h:535
bool myIsAggregate
Definition: entityFacadeCollection.h:509
std::map< int, std::map< int, int > > ActivatedStates
Definition: entityFacadeCollection.h:543
virtual bool isDiGuy() const
Returns true if is a DI-Guy model.
Definition: entityFacadeCollection.h:282
voidpf uLong offset
Definition: ioapi.h:42
virtual bool isAggregate() const
Definition: entityFacadeCollection.h:462
DtPatchIdentifier myDiGuyRankPatch
Definition: entityFacadeCollection.h:521
boost::signals2::signal< void()> signal_endOfMarkingDecalSet
Definition: entityFacadeCollection.h:494
std::set< int > myIgnoreVisualTypeSwitch
Definition: entityFacadeCollection.h:556
makVrv::DtSignalConnectionManager myConnections
Definition: entityFacadeCollection.h:550
bool myIndicatorVisible
Definition: entityFacadeCollection.h:531
makVrv::DtUnicode myElementDefinition
Facades by model set.
Definition: entityFacadeCollection.h:498
Given a scene object, this class will iterate over the models, looking for an articulated model or di...
Definition: boundingVolumeSupportPointCalculator.h:41
makVrv::DtDe & myDe
Definition: entityFacadeCollection.h:572
void setIconScale(float scale)
Definition: entityFacadeCollection.h:338
bool myRotateToHeading
Definition: entityFacadeCollection.h:548
bool myCharacterPaused
Definition: entityFacadeCollection.h:526
std::map< int, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:27
bool myMarkingsModified
Definition: entityFacadeCollection.h:541

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)