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

#include <PacketDropOsgVisualizer.h>

Inheritance diagram for inet::visualizer::PacketDropOsgVisualizer:
inet::visualizer::PacketDropVisualizerBase inet::visualizer::VisualizerBase

Classes

class  PacketDropOsgVisualization
 

Protected Member Functions

virtual void refreshDisplay () const override
 
virtual const PacketDropVisualizationcreatePacketDropVisualization (PacketDrop *packetDrop) const override
 
virtual void addPacketDropVisualization (const PacketDropVisualization *packetDropVisualization) override
 
virtual void removePacketDropVisualization (const PacketDropVisualization *packetDropVisualization) override
 
virtual void setAlpha (const PacketDropVisualization *packetDropVisualization, double alpha) const override
 
- Protected Member Functions inherited from inet::visualizer::PacketDropVisualizerBase
virtual void initialize (int stage) override
 
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual void removeAllPacketDropVisualizations ()
 
virtual std::string getPacketDropVisualizationText (const PacketDrop *packetDrop) 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
 

Additional Inherited Members

- Public Member Functions inherited from inet::visualizer::PacketDropVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 
- Protected Attributes inherited from inet::visualizer::PacketDropVisualizerBase
bool displayPacketDrops = false
 
NetworkNodeFilter nodeFilter
 
InterfaceFilter interfaceFilter
 
PacketFilter packetFilter
 
DetailsFilter detailsFilter
 
const char * icon = nullptr
 
ColorSet iconTintColorSet
 
double iconTintAmount = NaN
 
StringFormat labelFormat
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
const char * fadeOutMode = nullptr
 
double fadeOutTime = NaN
 
double fadeOutAnimationSpeed = NaN
 
std::vector< const PacketDropVisualization * > packetDropVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addPacketDropVisualization()

void inet::visualizer::PacketDropOsgVisualizer::addPacketDropVisualization ( const PacketDropVisualization packetDropVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::PacketDropVisualizerBase.

59 {
61  auto packetDropOsgVisualization = static_cast<const PacketDropOsgVisualization *>(packetDropVisualization);
63  scene->addChild(packetDropOsgVisualization->node);
64 }

◆ createPacketDropVisualization()

const PacketDropVisualizerBase::PacketDropVisualization * inet::visualizer::PacketDropOsgVisualizer::createPacketDropVisualization ( PacketDrop packetDrop) const
overrideprotectedvirtual

Implements inet::visualizer::PacketDropVisualizerBase.

34 {
35  auto image = inet::osg::createImageFromResource("msg/packet_s");
36  auto texture = new osg::Texture2D();
37  texture->setImage(image);
38  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);
39  auto stateSet = geometry->getOrCreateStateSet();
40  stateSet->setTextureAttributeAndModes(0, texture);
41  stateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
42  stateSet->setMode(GL_BLEND, osg::StateAttribute::ON);
43  stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
44  stateSet->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
45  auto autoTransform = inet::osg::createAutoTransform(geometry, osg::AutoTransform::ROTATE_TO_SCREEN, true);
46  auto material = new osg::Material();
47  auto iconTintColor = iconTintColorSet.getColor(packetDrop->getReason() % iconTintColorSet.getSize());
48  osg::Vec4 colorVec((double)iconTintColor.red / 255.0, (double)iconTintColor.green / 255.0, (double)iconTintColor.blue / 255.0, 1.0);
49  material->setAmbient(osg::Material::FRONT_AND_BACK, colorVec);
50  material->setDiffuse(osg::Material::FRONT_AND_BACK, colorVec);
51  material->setAlpha(osg::Material::FRONT_AND_BACK, 1.0);
52  autoTransform->getChild(0)->getOrCreateStateSet()->setAttribute(material);
53  auto positionAttitudeTransform = inet::osg::createPositionAttitudeTransform(packetDrop->getPosition(), Quaternion::IDENTITY);
54  positionAttitudeTransform->addChild(autoTransform);
55  return new PacketDropOsgVisualization(positionAttitudeTransform, packetDrop);
56 }

◆ refreshDisplay()

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

Reimplemented from inet::visualizer::PacketDropVisualizerBase.

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

◆ removePacketDropVisualization()

void inet::visualizer::PacketDropOsgVisualizer::removePacketDropVisualization ( const PacketDropVisualization packetDropVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::PacketDropVisualizerBase.

67 {
69  auto packetDropOsgVisualization = static_cast<const PacketDropOsgVisualization *>(packetDropVisualization);
70  auto node = packetDropOsgVisualization->node;
71  node->getParent(0)->removeChild(node);
72 }

◆ setAlpha()

void inet::visualizer::PacketDropOsgVisualizer::setAlpha ( const PacketDropVisualization packetDropVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::PacketDropVisualizerBase.

75 {
76  auto packetDropOsgVisualization = static_cast<const PacketDropOsgVisualization *>(packetDropVisualization);
77  auto positionAttitudeTransform = static_cast<osg::PositionAttitudeTransform *>(packetDropOsgVisualization->node.get());
78  auto autoTransform = static_cast<osg::AutoTransform *>(positionAttitudeTransform->getChild(0));
79  auto geode = static_cast<osg::Geode *>(autoTransform->getChild(0));
80  auto material = static_cast<osg::Material *>(geode->getOrCreateStateSet()->getAttribute(osg::StateAttribute::MATERIAL));
81  material->setAlpha(osg::Material::FRONT_AND_BACK, alpha);
82  double dx = 10 / alpha;
83  double dy = 10 / alpha;
84  double dz = 58 - pow((dx / 4 - 9), 2);
85  auto& position = packetDropVisualization->packetDrop->getPosition();
86  positionAttitudeTransform->setPosition(osg::Vec3d(position.x + dx, position.y + dy, position.z + dz));
87 }

The documentation for this class was generated from the following files:
inet::visualizer::PacketDropVisualizerBase::fadeOutAnimationSpeed
double fadeOutAnimationSpeed
Definition: PacketDropVisualizerBase.h:92
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::visualizer::PacketDropVisualizerBase::refreshDisplay
virtual void refreshDisplay() const override
Definition: PacketDropVisualizerBase.cc:145
inet::visualizer::PacketDropVisualizerBase::iconTintColorSet
ColorSet iconTintColorSet
Definition: PacketDropVisualizerBase.h:85
inet::osg::TopLevelScene::getSimulationScene
virtual SimulationScene * getSimulationScene()
Definition: OsgScene.cc:22
inet::visualizer::PacketDropVisualizerBase::addPacketDropVisualization
virtual void addPacketDropVisualization(const PacketDropVisualization *packetDropVisualization)
Definition: PacketDropVisualizerBase.cc:207
inet::visualizer::ColorSet::getSize
size_t getSize() const
Definition: ColorSet.h:24
inet::Quaternion::IDENTITY
static Quaternion IDENTITY
Definition: Quaternion.h:20
inet::visualizer::PacketDropVisualizerBase::removePacketDropVisualization
virtual void removePacketDropVisualization(const PacketDropVisualization *packetDropVisualization)
Definition: PacketDropVisualizerBase.cc:212
inet::visualizer::PacketDropVisualizerBase::packetDropVisualizations
std::vector< const PacketDropVisualization * > packetDropVisualizations
Definition: PacketDropVisualizerBase.h:95
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)
inet::osg::createPositionAttitudeTransform
PositionAttitudeTransform * createPositionAttitudeTransform(const Coord &position, const Quaternion &orientation)
Definition: OsgUtils.cc:221
inet::osg::createAutoTransform
AutoTransform * createAutoTransform(Drawable *drawable, AutoTransform::AutoRotateMode mode, bool autoScaleToScreen, const Coord &position)
Definition: OsgUtils.cc:209
inet::visualizer::ColorSet::getColor
cFigure::Color getColor(int index) const
Definition: ColorSet.cc:33