![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2010 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 /***************************************************************************** 00006 * $RCSfile: DtVrlinkEntitySensorVolumeVisualizer.h,v $ $Revision: 1.0 $ $State: Exp $ 00007 *****************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #ifndef DT_PROTOCOL_NAMESPACE 00016 #error Namespace Protocol Macro DT_PROTOCOL_NAMESPACE not defined. 00017 #endif 00018 00019 #include <vrvCore/DtEntitySensorVolumeVisualizer.h> 00020 00021 class DtEmitterBeamRepository; 00022 00023 namespace makVrv 00024 { 00025 00026 class DtSignalConnectionManager; 00027 class DtEllipsoidArcModelAgent; 00028 00029 namespace DT_PROTOCOL_NAMESPACE 00030 { 00031 00032 class DtVrlinkEmitterStateListener; 00033 class DtEmitterSystemExistenceListener; 00034 00037 class DL_DLL_IGCONVRLINK DtVrlinkEntitySensorVolumeVisualizer : public DtEntitySensorVolumeVisualizer 00038 { 00039 public: 00040 00047 DtVrlinkEntitySensorVolumeVisualizer( DtBaseConnection& simulation, DtStateListener& listener, int modelSet ); 00048 00052 virtual ~DtVrlinkEntitySensorVolumeVisualizer(); 00053 00056 00062 virtual void createModelAgents(); 00063 00066 virtual void destroyModelAgents(); 00067 00073 virtual void setVisualizerDefinition( const DtVisualizerDefinition& visDef ); 00074 00076 00077 protected: 00078 00081 00088 virtual void slot_emitterSystemDiscovered( DtVrlinkEmitterStateListener* listener ); 00089 00095 virtual void slot_emitterSystemToBeDestroyed( const DtVrlinkEmitterStateListener* listener ); 00096 00098 00101 00107 virtual void slot_emitterBeamDiscovered( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr ); 00108 00114 virtual void slot_emitterBeamToBeRemoved( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr ); 00115 00121 virtual void slot_relativePositionSet( const DtVrlinkEmitterStateListener* listener, const DtVector& position ); 00122 00124 00127 00134 virtual void slot_azimuthRangeSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, DtFloat32 azimuthCenter, DtFloat32 azimuthSweep ); 00135 00142 virtual void slot_elevationRangeSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, DtFloat32 elevationCenter, DtFloat32 elevationSweep ); 00143 00149 virtual void slot_beamFrequencySet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 pulseWidth ); 00150 00156 virtual void slot_beamPulseWidthSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 pulseWidth ); 00157 00163 virtual void slot_beamEmittedPowerSet( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr, const DtFloat32 power ); 00164 00166 00169 00178 virtual void registerEmitterSystem( DtVrlinkEmitterStateListener* listener ); 00179 00185 virtual DtSignalConnectionManager* createSignalConnections( DtVrlinkEmitterStateListener* listener ); 00186 00191 virtual void destroyEmitterSystem( const DtVrlinkEmitterStateListener* listener ); 00192 00197 void destroyEmitterSystemInternal( const DtVrlinkEmitterStateListener* listener ); 00198 00205 virtual void updateBeamVisualization( const DtVrlinkEmitterStateListener* listener, const DtEmitterBeamRepository* bsr ); 00206 00212 virtual DtEllipsoidArcModelAgent* findOrCreateBeamModel( const DtEmitterBeamRepository* bsr ); 00213 00218 virtual DtEllipsoidArcModelAgent* findBeamModel( const DtEmitterBeamRepository* bsr ); 00219 00223 virtual void destroyEmitterBeam( const DtEmitterBeamRepository* bsr ); 00224 00230 virtual void updateBeamVisibility( const DtEmitterBeamRepository* bsr ); 00231 00238 virtual void updateBeamScale( const DtEmitterBeamRepository* bsr ); 00239 00244 virtual void updateBeamColors( const DtEmitterBeamRepository* bsr ); 00245 00249 virtual void setBeamRelativePosition( const DtEmitterBeamRepository* bsr, const DtVector& position ); 00250 00256 virtual void setBeamAzimuthRange( const DtEmitterBeamRepository* bsr ); 00257 00264 virtual void setBeamElevationRange( const DtEmitterBeamRepository* bsr ); 00265 00268 virtual void setBeamInsideColor( const DtEmitterBeamRepository* bsr, 00269 float r, float g, float b, float a ); 00270 00273 virtual void setBeamOutsideColor( const DtEmitterBeamRepository* bsr, 00274 float r, float g, float b, float a ); 00275 00279 virtual void setBeamScale( const DtEmitterBeamRepository* bsr, float scale ); 00280 00289 00290 virtual void computeColorForFrequency( double hi, double low, 00291 double act, float innerColor[4], float outerColor[4] ); 00292 00300 static void hsv2rgb( float hue, float sat, float val, float color[3] ); 00301 00303 00304 protected: 00305 00306 // \brief Stores information about each emitter system for this entity 00307 typedef boost::unordered_map<const DtVrlinkEmitterStateListener*,DtSignalConnectionManager*> EmitterSystemConnectionsMap; 00308 00309 // \brief Stores the beam model id's for each emitter beam's model 00310 typedef boost::unordered_map<const DtEmitterBeamRepository*,DtUniqueID> BeamModelIdMap; 00311 00313 DtEmitterSystemExistenceListener* myEmitterSystemExistenceListener; 00314 00316 DtVrlinkEntityStateListener* myEntityListener; 00317 00319 EmitterSystemConnectionsMap myEmitterSystemConnections; 00320 00322 BeamModelIdMap myBeamModelIds; 00323 00324 double myLinearScale; 00325 double myExponentialScale; 00326 00327 double myHighPulseFrequency; 00328 double myLowPulseFrequency; 00329 double myHighFrequency; 00330 double myLowFrequency; 00331 00332 float myNearColor[4]; 00333 float myFarColor[4]; 00334 00335 }; 00336 00337 typedef DtStateVisualizerCreatorTemplate<DtVrlinkEntitySensorVolumeVisualizer> DtVrlinkEntitySensorVolumeVisualizerCreator; 00338 } 00339 }