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

#include <LinkBreakOsgVisualizer.h>

Inheritance diagram for inet::visualizer::LinkBreakOsgVisualizer:
inet::visualizer::LinkBreakVisualizerBase inet::visualizer::VisualizerBase

Classes

class  LinkBreakOsgVisualization
 

Protected Member Functions

virtual void refreshDisplay () const override
 
virtual const LinkBreakVisualizationcreateLinkBreakVisualization (cModule *transmitter, cModule *receiver) const override
 
virtual void addLinkBreakVisualization (const LinkBreakVisualization *linkBreakVisualization) override
 
virtual void removeLinkBreakVisualization (const LinkBreakVisualization *linkBreakVisualization) override
 
virtual void setAlpha (const LinkBreakVisualization *linkBreakVisualization, double alpha) const override
 
- 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
 

Additional Inherited Members

- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addLinkBreakVisualization()

void inet::visualizer::LinkBreakOsgVisualizer::addLinkBreakVisualization ( const LinkBreakVisualization linkBreakVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

60 {
62  auto linkBreakOsgVisualization = static_cast<const LinkBreakOsgVisualization *>(linkBreakVisualization);
64  scene->addChild(linkBreakOsgVisualization->node);
65 }

◆ createLinkBreakVisualization()

const LinkBreakVisualizerBase::LinkBreakVisualization * inet::visualizer::LinkBreakOsgVisualizer::createLinkBreakVisualization ( cModule *  transmitter,
cModule *  receiver 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkBreakVisualizerBase.

36 {
38  auto texture = new osg::Texture2D();
39  texture->setImage(image);
40  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);
41  auto stateSet = geometry->getOrCreateStateSet();
42  stateSet->setTextureAttributeAndModes(0, texture);
43  stateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
44  stateSet->setMode(GL_BLEND, osg::StateAttribute::ON);
45  stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
46  stateSet->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
47  auto geode = new osg::Geode();
48  geode->addDrawable(geometry);
49  auto material = new osg::Material();
50  osg::Vec4 colorVec((double)iconTintColor.red / 255.0, (double)iconTintColor.green / 255.0, (double)iconTintColor.blue / 255.0, 1.0);
51  material->setAmbient(osg::Material::FRONT_AND_BACK, colorVec);
52  material->setDiffuse(osg::Material::FRONT_AND_BACK, colorVec);
53  material->setAlpha(osg::Material::FRONT_AND_BACK, 1.0);
54  geode->getOrCreateStateSet()->setAttribute(material);
55  // TODO apply tinting
56  return new LinkBreakOsgVisualization(geode, transmitter->getId(), receiver->getId());
57 }

◆ refreshDisplay()

void inet::visualizer::LinkBreakOsgVisualizer::refreshDisplay ( ) const
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

29 {
31  // TODO switch to osg canvas when API is extended
32  visualizationTargetModule->getCanvas()->setAnimationSpeed(linkBreakVisualizations.empty() ? 0 : fadeOutAnimationSpeed, this);
33 }

◆ removeLinkBreakVisualization()

void inet::visualizer::LinkBreakOsgVisualizer::removeLinkBreakVisualization ( const LinkBreakVisualization linkBreakVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

68 {
70  auto linkBreakOsgVisualization = static_cast<const LinkBreakOsgVisualization *>(linkBreak);
71  auto node = linkBreakOsgVisualization->node;
72  node->getParent(0)->removeChild(node);
73 }

◆ setAlpha()

void inet::visualizer::LinkBreakOsgVisualizer::setAlpha ( const LinkBreakVisualization linkBreakVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkBreakVisualizerBase.

76 {
77  auto linkBreakOsgVisualization = static_cast<const LinkBreakOsgVisualization *>(linkBreakVisualization);
78  auto node = linkBreakOsgVisualization->node;
79  auto material = static_cast<osg::Material *>(node->getOrCreateStateSet()->getAttribute(osg::StateAttribute::MATERIAL));
80  material->setAlpha(osg::Material::FRONT_AND_BACK, alpha);
81 }

The documentation for this class was generated from the following files:
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::osg::TopLevelScene::getSimulationScene
virtual SimulationScene * getSimulationScene()
Definition: OsgScene.cc:22
inet::osg::createImageFromResource
osg::Image * createImageFromResource(const char *imageName)
Definition: OsgUtils.cc:250
inet::units::constants::alpha
const value< double, units::unit > alpha(7.2973525376e-3)