VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes
makVrv::DtEntityEmitterVolumeVisualizer Class Referenceabstract

Protocol independent emitter volume visualizer.

Note
Formerly named DtEntitySensorVolumeVisualizer.
Inheritance diagram for makVrv::DtEntityEmitterVolumeVisualizer:
Inheritance graph
[legend]

Public Types

enum  ColoringMode { PulseFrequency, Frequency, Fixed }
 
- Public Types inherited from makVrv::DtStateVisualizer
enum  Type {
  AllVisualizerTypes = 0, EntityVisualizerType = 1, EnvironmentalVisualizerType, InteractionVisualizerType,
  AggregateVisualizerType, IntervisibilityVisualizerType, TacticalSmokeVisualizerType, UserType = 10000
}
 

Public Member Functions

 DtEntityEmitterVolumeVisualizer (DtBaseConnection &simulation, DtStateListener &listener, DtSceneObjectAgent *sceneObject, DtModelSetId modelSet)
 
virtual ~DtEntityEmitterVolumeVisualizer ()
 
 DtEntityEmitterVolumeVisualizer ()=delete
 
 DtEntityEmitterVolumeVisualizer (const DtEntityEmitterVolumeVisualizer &)=delete
 
DtEntityEmitterVolumeVisualizeroperator= (const DtEntityEmitterVolumeVisualizer &)=delete
 
virtual void initialize () override
 
virtual void createModelAgents () override
 
virtual void destroyModelAgents () override
 
virtual void setModelDefinitionForAgents () override
 
virtual void slot_emitterBeamDiscovered (const DtUniqueID &id)
 
virtual void slot_emitterBeamToBeRemoved (const DtUniqueID &id)
 
virtual void setColoringMode (ColoringMode method)
 
virtual const ColoringMode coloringMode () const
 
- Public Member Functions inherited from makVrv::DtStateVisualizer
 DtStateVisualizer (DtBaseConnection &connection, DtStateListener &listener, DtSceneObjectAgent *sceneObjectAgent, DtModelSetId modelSet)
 
virtual ~DtStateVisualizer ()
 
virtual DtModelSetId modelSet ()
 
virtual const TypeInfotypeInfo () const =0
 
virtual void setSceneObjectAgent (DtSceneObjectAgent *sceneObject)
 
void setModelDefinition (const std::string &definition)
 
const std::string & modelDefinition () const
 
virtual void implementVisibility (bool visible)
 
virtual void slot_setSelected (bool b)
 
void setName (const std::string &)
 
const std::string & name () const
 
virtual void setPickable (bool)
 
virtual bool pickable () const
 
virtual DtUniqueID sceneObjectID () const
 
int visualizerType () const
 
virtual void setVisualizerDefinition (const DtVisualizerDefinition &)
 
DtStateListenerlistener ()
 
const DtStateListenerlistener () const
 
DtBaseConnectionsimulation ()
 
void setDistribute (bool b)
 
bool distribute () const
 
virtual bool setVisualizerIsVisible (bool vis, DtVisualizerShowHideContext::VisualizerShowHideContext context)
 

Protected Types

using EmitterBeamModelMap = std::unordered_map< DtUniqueID, DtModelAgent * >
 
- Protected Types inherited from makVrv::DtStateVisualizer
typedef std::vector
< DtVisualizerShowHideContext::VisualizerShowHideContext
ShowHideContextVector
 

Protected Member Functions

virtual DtEntityStateListenerentityStateListener ()
 
virtual const
DtEntityStateListener
entityStateListener () const
 
virtual DtModelAgent * createBeamModel ()
 
virtual DtModelAgent * findBeamModel (const DtUniqueID &beamModelId)
 
virtual bool beamIsVisible (float elevationSweep, float azimuthSweep, float emittedPower)
 
virtual void setBeamModelVisible (DtModelAgent *beamModel, bool visibility)
 
virtual void slot_entityEmitterVolumesVisibleChanged (bool visible, bool instanceOnly)
 
virtual void setInitialValuesFromVisualizerDefinition () override
 
virtual void connectToListenerSignals () override
 
virtual double calculateBeamScale (float elevationRangeSweep, float azimuthRangeSweep, float erPower)
 
virtual void computeColorForFrequency (double hi, double low, double act, float innerColor[4], float outerColor[4])
 
virtual void destroyEmitterBeam (const DtUniqueID &)
 
virtual void destroyEmitterBeamModel (DtModelAgent *)
 
virtual void slot_setBeamlRelativePosition (const DtUniqueID &beamId, DtVector32 offset)
 
virtual void slot_setBeamAzimuthRange (const DtUniqueID &beamId, float center, float sweep)
 
virtual void slot_setBeamElevationRange (const DtUniqueID &beamId, float center, float sweep)
 
virtual void slot_setBeamERP (const DtUniqueID &beamId, float erp)
 
virtual void slot_setBeamFrequency (const DtUniqueID &beamId, float freq)
 
virtual void slot_setBeamPulseWidth (const DtUniqueID &beamId, float width)
 
virtual void setBeamModelRelativePosition (DtModelAgent *beamModel, DtVector32 offset)=0
 
virtual void setBeamModelAzimuthRange (DtModelAgent *beamModel, float center, float sweep)=0
 
virtual void setBeamModelElevationRange (DtModelAgent *beamModel, float center, float sweep)=0
 
virtual void setBeamModelScale (DtModelAgent *beamModel, double scale)=0
 
virtual void updateBeamModelColors (DtModelAgent *beamModel, float freq, float prf)
 
virtual void setBeamInsideColor (DtModelAgent *beamModel, float r, float g, float b, float a)=0
 
virtual void setBeamOutsideColor (DtModelAgent *beamModel, float r, float g, float b, float a)=0
 
- Protected Member Functions inherited from makVrv::DtStateVisualizer
virtual void makeVisible ()
 
virtual bool isVisible () const
 
template<typename T , typename C >
void connectAndUpdate (boost::signalslib::signal< void(T)> &sig, void(C::*fp)(T), T val)
 

Static Protected Member Functions

static void hsv2rgb (float hue, float sat, float val, float color[3])
 

Protected Attributes

ColoringMode myColoringMode
 
DtEntityStateListenermyEntityStateListener
 
EmitterBeamModelMap myEmitterBeamModelMap
 
double myLinearScale
 
double myExponentialScale
 
double myHighPulseFrequency
 
double myLowPulseFrequency
 
double myHighFrequency
 
double myLowFrequency
 
float myNearColor [4]
 
float myFarColor [4]
 
bool myUseCorrectedBeamScaleFormula
 
- Protected Attributes inherited from makVrv::DtStateVisualizer
DtBaseConnectionmySimulation
 
DtStateListenermyListener
 
bool myDistributeFlag
 
DtUniqueID mySceneObjectID
 
std::string myName
 
std::string myModelDefinition
 
DtSignalConnectionManager myConnections
 
DtModelSetId myModelSet
 
int myVisualizerType
 
bool myPickable
 
bool myVisible
 
const DtVisualizerDefinitionmyVisualizerDefinition
 
DtSceneObjectAgent * mySceneObjectAgent
 
bool myInitialInitializeDone
 
ShowHideContextVector myVisualizerShowHideContexts
 

Member Typedef Documentation

using makVrv::DtEntityEmitterVolumeVisualizer::EmitterBeamModelMap = std::unordered_map<DtUniqueID, DtModelAgent*>
protected

Member Enumeration Documentation

Enumeration of the coloring modes for coloring emitter volumes.

Enumerator
PulseFrequency 
Frequency 
Fixed 

Constructor & Destructor Documentation

makVrv::DtEntityEmitterVolumeVisualizer::DtEntityEmitterVolumeVisualizer ( DtBaseConnection simulation,
DtStateListener listener,
DtSceneObjectAgent *  sceneObject,
DtModelSetId  modelSet 
)

CTOR.

virtual makVrv::DtEntityEmitterVolumeVisualizer::~DtEntityEmitterVolumeVisualizer ( )
virtual

DTOR Cleans up the model agents associated with this visualizer.

makVrv::DtEntityEmitterVolumeVisualizer::DtEntityEmitterVolumeVisualizer ( )
delete

default constructor - not allowed

makVrv::DtEntityEmitterVolumeVisualizer::DtEntityEmitterVolumeVisualizer ( const DtEntityEmitterVolumeVisualizer )
delete

copy constructor - not allowed

Member Function Documentation

DtEntityEmitterVolumeVisualizer& makVrv::DtEntityEmitterVolumeVisualizer::operator= ( const DtEntityEmitterVolumeVisualizer )
delete

assignment operator - not allowed

virtual void makVrv::DtEntityEmitterVolumeVisualizer::initialize ( )
overridevirtual

Initialize the visualizer.

Reimplemented from makVrv::DtStateVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::createModelAgents ( )
overridevirtual
virtual void makVrv::DtEntityEmitterVolumeVisualizer::destroyModelAgents ( )
overridevirtual

Detaches all beam model agents from the scene object agent and deletes them.

See Also
makVrv::DtStateVisualizer::destroyModelAgents()

Implements makVrv::DtStateVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setModelDefinitionForAgents ( )
overridevirtual

Sets the model definition on all instantiated beam model agents.

See Also
DtStateVisualizer::setModelDefinitionForAgents()

Implements makVrv::DtStateVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_emitterBeamDiscovered ( const DtUniqueID id)
virtual

Receives notification of emitter beam discovery Connected to signal_emitterBeamAdded.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_emitterBeamToBeRemoved ( const DtUniqueID id)
virtual

Receives notification of pending emitter beam removals Connected to signal_emitterBeamRemoved.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setColoringMode ( ColoringMode  method)
virtual

Sets the method used to color the emitter volume Sets the mode to use for coloring the emitter volumes.

Parameters
modethe coloring mode to use
See Also
makVrv::Dt2DEntityEmitterVolumeVisualizer::ColoringMode
virtual const ColoringMode makVrv::DtEntityEmitterVolumeVisualizer::coloringMode ( ) const
virtual

Gets the method used to color the emitter volume Gets the mode used for coloring the emitter volumes.

Returns
the ColoringMode used for coloring the emitter volumes
See Also
makVrv::Dt2DEntityEmitterVolumeVisualizer::ColoringMode
virtual DtEntityStateListener& makVrv::DtEntityEmitterVolumeVisualizer::entityStateListener ( )
protectedvirtual
virtual const DtEntityStateListener& makVrv::DtEntityEmitterVolumeVisualizer::entityStateListener ( ) const
protectedvirtual
virtual DtModelAgent* makVrv::DtEntityEmitterVolumeVisualizer::createBeamModel ( )
protectedvirtual

Creates a new beam model agent Extending classes should override this method to use a different beam model.

Returns
nullptr

Reimplemented in makVrv::Dt3DEntityEmitterVolumeVisualizer, and makVrv::Dt2DEntityEmitterVolumeVisualizer.

virtual DtModelAgent* makVrv::DtEntityEmitterVolumeVisualizer::findBeamModel ( const DtUniqueID beamModelId)
protectedvirtual

Beam model accessor Gets the beam model with the given beamModelId.

Parameters
beamModelIdthe unique beam model ID
Returns
the beam model with the given ID, or nullptr if there isn't one.
virtual bool makVrv::DtEntityEmitterVolumeVisualizer::beamIsVisible ( float  elevationSweep,
float  azimuthSweep,
float  emittedPower 
)
protectedvirtual

Determines whether a beam model should be visible or not based on the geometry, emitted power, and myEntityStateListener->entityEmitterVolumesVisible()

Returns
if beam is visible
virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamModelVisible ( DtModelAgent *  beamModel,
bool  visibility 
)
protectedvirtual

Shows or hides the given beam model by adding or removing it from the scene object.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_entityEmitterVolumesVisibleChanged ( bool  visible,
bool  instanceOnly 
)
protectedvirtual

Slot for emitter volume visibility toggle from the signaler Connected to signal_entityEmitterVolumesVisibleChanged.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamlRelativePosition ( const DtUniqueID beamId,
DtVector32  offset 
)
protectedvirtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamAzimuthRange ( const DtUniqueID beamId,
float  center,
float  sweep 
)
protectedvirtual

Sets the azimuth range of the given emitter beam Converts the input azimuth center from counter-clockwise starting at the +y axis to clockwise starting at the +x axis (wrt +z rotation), and sets the resulting azimuth on the beam model with the given id.

See Also
1278.1-1995.pdf - IEEE Standard for Distributed Interactive Simulation

Reimplemented in makVrv::Dt3DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamElevationRange ( const DtUniqueID beamId,
float  center,
float  sweep 
)
protectedvirtual

Sets the elevation range of the given emitter beam Converts the input elevation center from an angle offset from the -z axis to an angle offset from the x/y plane (positive in the -z axis direction, and negative angles in the +z axis direction), and sets the resulting elevation on the beam model with the given id.

See Also
1278.1-1995.pdf - IEEE Standard for Distributed Interactive Simulation

Reimplemented in makVrv::Dt3DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamERP ( const DtUniqueID beamId,
float  erp 
)
protectedvirtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamFrequency ( const DtUniqueID beamId,
float  freq 
)
protectedvirtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::slot_setBeamPulseWidth ( const DtUniqueID beamId,
float  width 
)
protectedvirtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamModelRelativePosition ( DtModelAgent *  beamModel,
DtVector32  offset 
)
protectedpure virtual

2D & 3D Derived Visualizers implement

Sets the relative position of the emitter beams Converts the given offset position from (x,y,z) to (y,x,-z) and sets the relative position on the beam's model agent.

Implemented in makVrv::Dt2DEntityEmitterVolumeVisualizer, and makVrv::Dt3DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamModelAzimuthRange ( DtModelAgent *  beamModel,
float  center,
float  sweep 
)
protectedpure virtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

Implemented in makVrv::Dt2DEntityEmitterVolumeVisualizer, and makVrv::Dt3DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamModelElevationRange ( DtModelAgent *  beamModel,
float  center,
float  sweep 
)
protectedpure virtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

Implemented in makVrv::Dt2DEntityEmitterVolumeVisualizer, and makVrv::Dt3DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamModelScale ( DtModelAgent *  beamModel,
double  scale 
)
protectedpure virtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

Implemented in makVrv::Dt3DEntityEmitterVolumeVisualizer, and makVrv::Dt2DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::updateBeamModelColors ( DtModelAgent *  beamModel,
float  freq,
float  prf 
)
protectedvirtual

Updates the colors on the given beam using the beam parameters Determines what colors to use for the beam model based on the coloring mode and the near and far colors set for this visualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamInsideColor ( DtModelAgent *  beamModel,
float  r,
float  g,
float  b,
float  a 
)
protectedpure virtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

Implemented in makVrv::Dt3DEntityEmitterVolumeVisualizer, and makVrv::Dt2DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setBeamOutsideColor ( DtModelAgent *  beamModel,
float  r,
float  g,
float  b,
float  a 
)
protectedpure virtual

Slots for beam signals from the entity state listener. Each slot finds the model associated with the ID and calls the setbeam* method for the appropriate variable.

Implemented in makVrv::Dt3DEntityEmitterVolumeVisualizer, and makVrv::Dt2DEntityEmitterVolumeVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::setInitialValuesFromVisualizerDefinition ( )
overrideprotectedvirtual

Sets member variables from the visualizer definition if they exist Should not call this directly. Called by DtStateVisualizer::initialize.

Reimplemented from makVrv::DtStateVisualizer.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::connectToListenerSignals ( )
overrideprotectedvirtual

Connect the visualizer to the listeners signals.

Reimplemented from makVrv::DtStateVisualizer.

virtual double makVrv::DtEntityEmitterVolumeVisualizer::calculateBeamScale ( float  elevationRangeSweep,
float  azimuthRangeSweep,
float  erPower 
)
protectedvirtual

Calculates the scale on the given beam using the beam sweep and power.

Applies scaling to the emitter volume visual model. DMO: I got this function by algebraicly simplifying the function in the original Stealth source code. I have no idea what it is doing. DJW: Taken from: cvs:/vpNet/libsrc/vpNetProtocol/vpNetEmitterSystemDriver.cxx 6/30/2010 TDL: A new visual definition parameter, useCorrectedBeamScale has been added. If this is set to true, a corrected formula is used to distribute the power value through the beam's surface. 10/20/2018

Returns
the appropriate scaling on the emitter volume model based on the emitter power and the linear and exponential scaling parameters.
virtual void makVrv::DtEntityEmitterVolumeVisualizer::computeColorForFrequency ( double  hi,
double  low,
double  act,
float  innerColor[4],
float  outerColor[4] 
)
protectedvirtual

Formats inputs and calls to DtHsv2Rgb Converts low / actual / hi to a number in the range [0,1] indicating the distance between low and hi, then multiplies that value by a preset hue (purple - 0.73f) for input into the DtHsv2Rgb function.

Parameters
hithe hi frequency to use for scaling
lowthe low frequency to use for scaling
actthe actual frequency
colorreference to storage for the resulting color
static void makVrv::DtEntityEmitterVolumeVisualizer::hsv2rgb ( float  hue,
float  sat,
float  val,
float  color[3] 
)
staticprotected

Converts the given hue/sat/val to an RGB color This method was originally written by Mike Weiblen of SAIC's War Breaker program. The function was modified to fit into the standard VR-Link format.

Parameters
huethe hue value
satthe saturation value
valthe value value (color brightness)
colorreference to storage for the resulting color
virtual void makVrv::DtEntityEmitterVolumeVisualizer::destroyEmitterBeam ( const DtUniqueID )
protectedvirtual

Removes the model from the scene object and deletes it Removes the entry from myEmitterBeamModelMap.

virtual void makVrv::DtEntityEmitterVolumeVisualizer::destroyEmitterBeamModel ( DtModelAgent *  )
protectedvirtual

Removes the model from the scene object and deletes it.

Member Data Documentation

ColoringMode makVrv::DtEntityEmitterVolumeVisualizer::myColoringMode
protected
DtEntityStateListener* makVrv::DtEntityEmitterVolumeVisualizer::myEntityStateListener
protected
EmitterBeamModelMap makVrv::DtEntityEmitterVolumeVisualizer::myEmitterBeamModelMap
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myLinearScale
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myExponentialScale
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myHighPulseFrequency
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myLowPulseFrequency
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myHighFrequency
protected
double makVrv::DtEntityEmitterVolumeVisualizer::myLowFrequency
protected
float makVrv::DtEntityEmitterVolumeVisualizer::myNearColor[4]
protected
float makVrv::DtEntityEmitterVolumeVisualizer::myFarColor[4]
protected
bool makVrv::DtEntityEmitterVolumeVisualizer::myUseCorrectedBeamScaleFormula
protected

The documentation for this class was generated from the following file:

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)