VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEntityEmitterVolumeVisualizer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2022 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvCore/DtUniqueID.h>
15 
16 #include <matrix/vlVector.h>
17 #include <vlutil/vlExceptions.h>
18 
19 #include <unordered_map>
20 
21 namespace makVrv
22 {
23 
24  class DtModelAgent;
25  class DtEntityStateListener;
26  class DtEmitterBeamStateListener;
27 
32  public DtStateVisualizer
33  {
34  public:
35 
39  {
42  Fixed
43  };
44 
47  DtSceneObjectAgent* sceneObject, DtModelSetId modelSet );
48 
52 
55 
58 
61 
62  public:
63 
64  virtual void initialize() override;
65 
67  virtual void createModelAgents() override;
68 
72  virtual void destroyModelAgents() override;
73 
76  virtual void setModelDefinitionForAgents() override;
77 
80  virtual void slot_emitterBeamDiscovered( const DtUniqueID& id );
81 
84  virtual void slot_emitterBeamToBeRemoved( const DtUniqueID& id );
85 
90  virtual void setColoringMode( ColoringMode method );
91 
96  virtual const ColoringMode coloringMode() const;
97 
98  protected:
99 
100  virtual DtEntityStateListener& entityStateListener();
101  virtual const DtEntityStateListener& entityStateListener() const;
102 
106  virtual DtModelAgent* createBeamModel();
107 
112  virtual DtModelAgent* findBeamModel( const DtUniqueID& beamModelId );
113 
117  virtual bool beamIsVisible( float elevationSweep, float azimuthSweep, float emittedPower);
118 
121  virtual void setBeamModelVisible( DtModelAgent* beamModel, bool visibility );
122 
125  virtual void slot_entityEmitterVolumesVisibleChanged(bool visible, bool instanceOnly);
126 
131  virtual void slot_setBeamlRelativePosition( const DtUniqueID& beamId, DtVector32 offset );
137  virtual void slot_setBeamAzimuthRange( const DtUniqueID& beamId, float center, float sweep );
138 
145  virtual void slot_setBeamElevationRange( const DtUniqueID& beamId, float center, float sweep );
146  virtual void slot_setBeamERP( const DtUniqueID& beamId, float erp );
147  virtual void slot_setBeamFrequency( const DtUniqueID& beamId, float freq );
148  virtual void slot_setBeamPulseWidth( const DtUniqueID& beamId, float width );
149 
150 
156  virtual void setBeamModelRelativePosition( DtModelAgent* beamModel, DtVector32 offset) = 0;
157  virtual void setBeamModelAzimuthRange( DtModelAgent* beamModel, float center, float sweep ) = 0;
158  virtual void setBeamModelElevationRange( DtModelAgent* beamModel, float center, float sweep ) = 0;
159  virtual void setBeamModelScale( DtModelAgent* beamModel, double scale) = 0;
163  virtual void updateBeamModelColors( DtModelAgent* beamModel, float freq, float prf);
164  virtual void setBeamInsideColor( DtModelAgent* beamModel, float r, float g, float b, float a ) = 0;
165  virtual void setBeamOutsideColor( DtModelAgent* beamModel, float r, float g, float b, float a ) = 0;
168 
169  protected:
172  virtual void setInitialValuesFromVisualizerDefinition() override;
173 
175  virtual void connectToListenerSignals() override;
176 
186  virtual double calculateBeamScale( float elevationRangeSweep, float azimuthRangeSweep, float erPower );
187 
196  virtual void computeColorForFrequency( double hi, double low,
197  double act, float innerColor[4], float outerColor[4] );
198 
206  static void hsv2rgb( float hue, float sat, float val, float color[3] );
207 
210  virtual void destroyEmitterBeam( const DtUniqueID& );
212  virtual void destroyEmitterBeamModel( DtModelAgent* );
213  protected:
216 
217  using EmitterBeamModelMap = std::unordered_map<DtUniqueID, DtModelAgent*>;
219 
222 
227 
228  float myNearColor[4];
229  float myFarColor[4];
230 
232  };
233 }
Protocol independent emitter volume visualizer.
Definition: DtEntityEmitterVolumeVisualizer.h:31
Definition: DtEntityEmitterVolumeVisualizer.h:40
EmitterBeamModelMap myEmitterBeamModelMap
Definition: DtEntityEmitterVolumeVisualizer.h:218
double myLinearScale
Definition: DtEntityEmitterVolumeVisualizer.h:220
std::unordered_map< DtUniqueID, DtModelAgent * > EmitterBeamModelMap
Definition: DtEntityEmitterVolumeVisualizer.h:217
bool myUseCorrectedBeamScaleFormula
Definition: DtEntityEmitterVolumeVisualizer.h:231
double myLowFrequency
Definition: DtEntityEmitterVolumeVisualizer.h:226
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
double myHighFrequency
Definition: DtEntityEmitterVolumeVisualizer.h:225
double myExponentialScale
Definition: DtEntityEmitterVolumeVisualizer.h:221
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Contains makVrv:DtStateVisualizer class.
DtEntityStateListener * myEntityStateListener
Definition: DtEntityEmitterVolumeVisualizer.h:215
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
double myLowPulseFrequency
Definition: DtEntityEmitterVolumeVisualizer.h:224
ColoringMode myColoringMode
Definition: DtEntityEmitterVolumeVisualizer.h:214
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:30
double myHighPulseFrequency
Definition: DtEntityEmitterVolumeVisualizer.h:223
Contains makVrv::DtUniqueID type.
ColoringMode
Enumeration of the coloring modes for coloring emitter volumes.
Definition: DtEntityEmitterVolumeVisualizer.h:38
DtModelSetId
Definition: DtModelSetEnums.h:19
voidpf uLong offset
Definition: ioapi.h:42
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
Definition: DtEntityEmitterVolumeVisualizer.h:41
DtEntityStateListener.
Definition: DtEntityStateListener.h:137

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)