VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVrlinkEntityEmitterVolumeVisualizer.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2020 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #ifndef DT_PROTOCOL_NAMESPACE
13 #error Namespace Protocol Macro DT_PROTOCOL_NAMESPACE not defined.
14 #endif
15 
17 
19 
20 namespace makVrv
21 {
22 
23  class DtSignalConnectionManager;
24  class DtEllipsoidArcModelAgent;
25 
26  namespace DT_PROTOCOL_NAMESPACE
27  {
28 
29  class DtVrlinkEmitterStateListener;
30  class DtEmitterSystemExistenceListener;
32 
36  {
37  public:
38 
45  DtVrlinkEntityEmitterVolumeVisualizer( DtBaseConnection& simulation, DtStateListener& listener, int modelSet );
46 
54  DtSceneObjectAgent* sceneObject, int modelSet );
55 
60 
63 
69  virtual void createModelAgents();
70 
73  virtual void destroyModelAgents();
74 
77  virtual void setInitialValuesFromVisualizerDefinition() override;
78 
80 
81  protected:
82 
85 
92  virtual void slot_emitterSystemDiscovered( DtVrlinkEmitterStateListener* listener );
93 
99  virtual void slot_emitterSystemToBeDestroyed( const DtVrlinkEmitterStateListener* listener );
100 
102 
105 
111  virtual void slot_emitterBeamDiscovered( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr );
112 
118  virtual void slot_emitterBeamToBeRemoved( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr );
119 
125  virtual void slot_relativePositionSet( const DtVrlinkEmitterStateListener* listener, const DtVector32& position );
126 
128 
131 
138  virtual void slot_azimuthRangeSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, DtFloat32 azimuthCenter, DtFloat32 azimuthSweep );
139 
146  virtual void slot_elevationRangeSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, DtFloat32 elevationCenter, DtFloat32 elevationSweep );
147 
153  virtual void slot_beamFrequencySet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 pulseWidth );
154 
160  virtual void slot_beamPulseWidthSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 pulseWidth );
161 
167  virtual void slot_beamEmittedPowerSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 power );
168 
170 
173 
182  virtual void registerEmitterSystem( DtVrlinkEmitterStateListener* listener );
183 
189  virtual DtSignalConnectionManager* createSignalConnections( DtVrlinkEmitterStateListener* listener );
190 
195  virtual void destroyEmitterSystem( const DtVrlinkEmitterStateListener* listener );
196 
201  void destroyEmitterSystemInternal( const DtVrlinkEmitterStateListener* listener );
202 
209  virtual void updateBeamVisualization( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr );
210 
216  virtual DtEllipsoidArcModelAgent* findOrCreateBeamModel( const DtEmitterBeamRepository* bsr );
217 
222  virtual DtEllipsoidArcModelAgent* findBeamModel( const DtEmitterBeamRepository* bsr );
223 
227  virtual void destroyEmitterBeam( const DtEmitterBeamRepository* bsr );
228 
234  virtual void updateBeamVisibility( const DtEmitterBeamRepository* bsr );
235 
244  virtual void updateBeamScale( const DtEmitterBeamRepository* bsr );
245 
250  virtual void updateBeamColors( const DtEmitterBeamRepository* bsr );
251 
255  virtual void setBeamRelativePosition( const DtEmitterBeamRepository* bsr, const DtVector32& position );
256 
262  virtual void setBeamAzimuthRange( const DtEmitterBeamRepository* bsr );
263 
270  virtual void setBeamElevationRange( const DtEmitterBeamRepository* bsr );
271 
274  virtual void setBeamInsideColor( const DtEmitterBeamRepository* bsr,
275  float r, float g, float b, float a );
276 
279  virtual void setBeamOutsideColor( const DtEmitterBeamRepository* bsr,
280  float r, float g, float b, float a );
281 
285  virtual void setBeamScale( const DtEmitterBeamRepository* bsr, float scale );
286 
295 
296  virtual void computeColorForFrequency( double hi, double low,
297  double act, float innerColor[4], float outerColor[4] );
298 
306  static void hsv2rgb( float hue, float sat, float val, float color[3] );
307 
309 
310  protected:
311 
312  // \brief Stores information about each emitter system for this entity
313  typedef boost::unordered_map<const DtVrlinkEmitterStateListener*,DtSignalConnectionManager*> EmitterSystemConnectionsMap;
314 
315  // \brief Stores the beam model id's for each emitter beam's model
316  typedef boost::unordered_map<const DtEmitterBeamRepository*,DtUniqueID> BeamModelIdMap;
317 
320 
323 
326 
329 
332 
337 
338  float myNearColor[4];
339  float myFarColor[4];
340 
342 
343  };
344 
346  }
347 }
Protocol independent emitter volume visualizer.
Definition: DtEntityEmitterVolumeVisualizer.h:29
Listens for new emitter systems and keeps track of them.
Definition: DtEmitterSystemExistenceListener.h:42
Contains the makVrv:DtEntityEmitterVolumeVisualizer class declaration.
Definition: DtStateVisualizer.h:305
#define DL_DLL_IGCONVRLINK
Definition: dllExport.h:26
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:39
#define DT_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:17
float DtFloat32
Definition: vrvControlStructTypes.h:35
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtStateVisualizerCreatorTemplate< DtVrlinkEntityEmitterVolumeVisualizer > DtVrlinkEntityEmitterVolumeVisualizerCreator
Definition: DtVrlinkEntityEmitterVolumeVisualizer.h:345
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:25

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)