INET Framework for OMNeT++/OMNEST
inet::visualizer::Ieee80211OsgVisualizer Class Reference

#include <Ieee80211OsgVisualizer.h>

Inheritance diagram for inet::visualizer::Ieee80211OsgVisualizer:
inet::visualizer::Ieee80211VisualizerBase inet::visualizer::VisualizerBase

Classes

class  Ieee80211OsgVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual Ieee80211VisualizationcreateIeee80211Visualization (cModule *networkNode, NetworkInterface *networkInterface, std::string ssid, W power) override
 
virtual void addIeee80211Visualization (const Ieee80211Visualization *ieee80211Visualization) override
 
virtual void removeIeee80211Visualization (const Ieee80211Visualization *ieee80211Visualization) override
 
- Protected Member Functions inherited from inet::visualizer::Ieee80211VisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual const Ieee80211VisualizationgetIeee80211Visualization (cModule *networkNode, NetworkInterface *networkInterface)
 
virtual void removeAllIeee80211Visualizations ()
 
virtual std::string getIcon (W power) const
 
- Protected Member Functions inherited from inet::visualizer::VisualizerBase
virtual int numInitStages () const override
 
virtual Coord getPosition (const cModule *networkNode) const
 
virtual Coord getContactPosition (const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
 
virtual Quaternion getOrientation (const cModule *networkNode) const
 
virtual void mapChunks (const Ptr< const Chunk > &chunk, const std::function< void(const Ptr< const Chunk > &, int)> &thunk) const
 

Protected Attributes

ModuleRefByPar< NetworkNodeOsgVisualizernetworkNodeVisualizer
 
- Protected Attributes inherited from inet::visualizer::Ieee80211VisualizerBase
bool displayAssociations = false
 
NetworkNodeFilter nodeFilter
 
InterfaceFilter interfaceFilter
 
double minPowerDbm = NaN
 
double maxPowerDbm = NaN
 
std::vector< std::string > icons
 
ColorSet iconColorSet
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
Placement placementHint
 
double placementPriority
 
std::map< std::pair< int, int >, const Ieee80211Visualization * > ieee80211Visualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Additional Inherited Members

- Public Member Functions inherited from inet::visualizer::Ieee80211VisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 

Member Function Documentation

◆ addIeee80211Visualization()

void inet::visualizer::Ieee80211OsgVisualizer::addIeee80211Visualization ( const Ieee80211Visualization ieee80211Visualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::Ieee80211VisualizerBase.

64 {
66  auto ieee80211OsgVisualization = static_cast<const Ieee80211OsgVisualization *>(ieee80211Visualization);
67  ieee80211OsgVisualization->networkNodeVisualization->addAnnotation(ieee80211OsgVisualization->node, osg::Vec3d(0, 0, 32), 0);
68 }

◆ createIeee80211Visualization()

Ieee80211VisualizerBase::Ieee80211Visualization * inet::visualizer::Ieee80211OsgVisualizer::createIeee80211Visualization ( cModule *  networkNode,
NetworkInterface networkInterface,
std::string  ssid,
W  power 
)
overrideprotectedvirtual

Implements inet::visualizer::Ieee80211VisualizerBase.

39 {
40  auto path = resolveResourcePath((getIcon(power) + ".png").c_str());
41  auto image = inet::osg::createImage(path.c_str());
42  auto texture = new osg::Texture2D();
43  texture->setImage(image);
44  auto geometry = osg::createTexturedQuadGeometry(osg::Vec3(-image->s() / 2, 0.0, 0.0), osg::Vec3(image->s(), 0.0, 0.0), osg::Vec3(0.0, image->t(), 0.0), 0.0, 0.0, 1.0, 1.0);
45  auto stateSet = geometry->getOrCreateStateSet();
46  stateSet->setTextureAttributeAndModes(0, texture);
47  stateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
48  stateSet->setMode(GL_BLEND, osg::StateAttribute::ON);
49  stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
50  stateSet->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
51  std::hash<std::string> hasher;
52  auto color = iconColorSet.getColor(hasher(ssid));
53  auto colorArray = new osg::Vec4Array();
54  colorArray->push_back(osg::Vec4((double)color.red / 255.0, (double)color.green / 255.0, (double)color.blue / 255.0, 1));
55  geometry->setColorArray(colorArray, osg::Array::BIND_OVERALL);
56  auto geode = new osg::Geode();
57  geode->addDrawable(geometry);
58  // TODO apply tinting
59  auto networkNodeVisualization = networkNodeVisualizer->getNetworkNodeVisualization(networkNode);
60  return new Ieee80211OsgVisualization(networkNodeVisualization, geode, networkNode->getId(), networkInterface->getInterfaceId());
61 }

◆ initialize()

void inet::visualizer::Ieee80211OsgVisualizer::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::visualizer::Ieee80211VisualizerBase.

30 {
32  if (!hasGUI()) return;
33  if (stage == INITSTAGE_LOCAL) {
34  networkNodeVisualizer.reference(this, "networkNodeVisualizerModule", true);
35  }
36 }

◆ removeIeee80211Visualization()

void inet::visualizer::Ieee80211OsgVisualizer::removeIeee80211Visualization ( const Ieee80211Visualization ieee80211Visualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::Ieee80211VisualizerBase.

71 {
73  auto ieee80211OsgVisualization = static_cast<const Ieee80211OsgVisualization *>(ieee80211Visualization);
74  if (networkNodeVisualizer != nullptr)
75  ieee80211OsgVisualization->networkNodeVisualization->removeAnnotation(ieee80211OsgVisualization->node);
76 }

Member Data Documentation

◆ networkNodeVisualizer

ModuleRefByPar<NetworkNodeOsgVisualizer> inet::visualizer::Ieee80211OsgVisualizer::networkNodeVisualizer
protected

The documentation for this class was generated from the following files:
inet::visualizer::Ieee80211VisualizerBase::addIeee80211Visualization
virtual void addIeee80211Visualization(const Ieee80211Visualization *ieee80211Visualization)
Definition: Ieee80211VisualizerBase.cc:98
inet::visualizer::Ieee80211VisualizerBase::getIcon
virtual std::string getIcon(W power) const
Definition: Ieee80211VisualizerBase.cc:177
inet::visualizer::Ieee80211OsgVisualizer::networkNodeVisualizer
ModuleRefByPar< NetworkNodeOsgVisualizer > networkNodeVisualizer
Definition: Ieee80211OsgVisualizer.h:32
inet::osg::createImage
osg::Image * createImage(const char *fileName)
Definition: OsgUtils.cc:242
inet::visualizer::Ieee80211VisualizerBase::iconColorSet
ColorSet iconColorSet
Definition: Ieee80211VisualizerBase.h:44
inet::visualizer::Ieee80211VisualizerBase::removeIeee80211Visualization
virtual void removeIeee80211Visualization(const Ieee80211Visualization *ieee80211Visualization)
Definition: Ieee80211VisualizerBase.cc:104
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::Ieee80211VisualizerBase::initialize
virtual void initialize(int stage) override
Definition: Ieee80211VisualizerBase.cc:35
inet::visualizer::ColorSet::getColor
cFigure::Color getColor(int index) const
Definition: ColorSet.cc:33