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

#include <TransportConnectionOsgVisualizer.h>

Inheritance diagram for inet::visualizer::TransportConnectionOsgVisualizer:
inet::visualizer::TransportConnectionVisualizerBase inet::visualizer::VisualizerBase

Classes

class  TransportConnectionOsgVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual osg::Node * createConnectionEndNode (tcp::TcpConnection *connectionVisualization) const
 
virtual const TransportConnectionVisualizationcreateConnectionVisualization (cModule *source, cModule *destination, tcp::TcpConnection *tcpConnection) const override
 
virtual void addConnectionVisualization (const TransportConnectionVisualization *connectionVisualization) override
 
virtual void removeConnectionVisualization (const TransportConnectionVisualization *connectionVisualization) override
 
- Protected Member Functions inherited from inet::visualizer::TransportConnectionVisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual void removeAllConnectionVisualizations ()
 
- 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::TransportConnectionVisualizerBase
bool displayTransportConnections = false
 
NetworkNodeFilter sourceNodeFilter
 
PortFilter sourcePortFilter
 
NetworkNodeFilter destinationNodeFilter
 
PortFilter destinationPortFilter
 
const char * icon = nullptr
 
ColorSet iconColorSet
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
Placement placementHint
 
double placementPriority
 
std::vector< const TransportConnectionVisualization * > connectionVisualizations
 
- 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::TransportConnectionVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 

Member Function Documentation

◆ addConnectionVisualization()

void inet::visualizer::TransportConnectionOsgVisualizer::addConnectionVisualization ( const TransportConnectionVisualization connectionVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TransportConnectionVisualizerBase.

64 {
66  auto connectionOsgVisualization = static_cast<const TransportConnectionOsgVisualization *>(connectionVisualization);
67  auto sourceModule = getSimulation()->getModule(connectionVisualization->sourceModuleId);
68  auto sourceNetworkNode = getContainingNode(sourceModule);
69  auto sourceVisualization = networkNodeVisualizer->getNetworkNodeVisualization(sourceNetworkNode);
70  sourceVisualization->addAnnotation(connectionOsgVisualization->sourceNode, osg::Vec3d(0, 0, 32), 0); // TODO size
71  auto destinationModule = getSimulation()->getModule(connectionVisualization->destinationModuleId);
72  auto destinationNetworkNode = getContainingNode(destinationModule);
73  auto destinationVisualization = networkNodeVisualizer->getNetworkNodeVisualization(destinationNetworkNode);
74  destinationVisualization->addAnnotation(connectionOsgVisualization->destinationNode, osg::Vec3d(0, 0, 32), 0); // TODO size
75 }

◆ createConnectionEndNode()

osg::Node * inet::visualizer::TransportConnectionOsgVisualizer::createConnectionEndNode ( tcp::TcpConnection connectionVisualization) const
protectedvirtual
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 color = iconColorSet.getColor(connectionVisualizations.size());
48  auto colorArray = new osg::Vec4Array();
49  colorArray->push_back(osg::Vec4((double)color.red / 255.0, (double)color.green / 255.0, (double)color.blue / 255.0, 1));
50  geometry->setColorArray(colorArray, osg::Array::BIND_OVERALL);
51  auto geode = new osg::Geode();
52  geode->addDrawable(geometry);
53  return geode;
54 }

Referenced by createConnectionVisualization().

◆ createConnectionVisualization()

const TransportConnectionVisualizerBase::TransportConnectionVisualization * inet::visualizer::TransportConnectionOsgVisualizer::createConnectionVisualization ( cModule *  source,
cModule *  destination,
tcp::TcpConnection tcpConnection 
) const
overrideprotectedvirtual

Implements inet::visualizer::TransportConnectionVisualizerBase.

57 {
58  auto sourceNode = createConnectionEndNode(tcpConnection);
59  auto destinationNode = createConnectionEndNode(tcpConnection);
60  return new TransportConnectionOsgVisualization(sourceNode, destinationNode, source->getId(), destination->getId(), 1);
61 }

◆ initialize()

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

Reimplemented from inet::visualizer::TransportConnectionVisualizerBase.

27 {
29  if (!hasGUI()) return;
30  if (stage == INITSTAGE_LOCAL) {
31  networkNodeVisualizer.reference(this, "networkNodeVisualizerModule", true);
32  }
33 }

◆ removeConnectionVisualization()

void inet::visualizer::TransportConnectionOsgVisualizer::removeConnectionVisualization ( const TransportConnectionVisualization connectionVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TransportConnectionVisualizerBase.

78 {
80  auto connectionOsgVisualization = static_cast<const TransportConnectionOsgVisualization *>(connectionVisualization);
81  auto sourceModule = getSimulation()->getModule(connectionVisualization->sourceModuleId);
82  auto sourceVisualization = networkNodeVisualizer->getNetworkNodeVisualization(getContainingNode(sourceModule));
83  sourceVisualization->removeAnnotation(connectionOsgVisualization->sourceNode);
84  auto destinationModule = getSimulation()->getModule(connectionVisualization->destinationModuleId);
85  auto destinationVisualization = networkNodeVisualizer->getNetworkNodeVisualization(getContainingNode(destinationModule));
86  destinationVisualization->removeAnnotation(connectionOsgVisualization->destinationNode);
87 }

Member Data Documentation

◆ networkNodeVisualizer

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

The documentation for this class was generated from the following files:
inet::visualizer::TransportConnectionVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: TransportConnectionVisualizerBase.cc:36
inet::visualizer::TransportConnectionVisualizerBase::connectionVisualizations
std::vector< const TransportConnectionVisualization * > connectionVisualizations
Definition: TransportConnectionVisualizerBase.h:57
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::visualizer::TransportConnectionVisualizerBase::addConnectionVisualization
virtual void addConnectionVisualization(const TransportConnectionVisualization *connectionVisualization)
Definition: TransportConnectionVisualizerBase.cc:90
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::TransportConnectionVisualizerBase::iconColorSet
ColorSet iconColorSet
Definition: TransportConnectionVisualizerBase.h:50
inet::visualizer::TransportConnectionOsgVisualizer::createConnectionEndNode
virtual osg::Node * createConnectionEndNode(tcp::TcpConnection *connectionVisualization) const
Definition: TransportConnectionOsgVisualizer.cc:35
inet::osg::createImageFromResource
osg::Image * createImageFromResource(const char *imageName)
Definition: OsgUtils.cc:250
inet::visualizer::TransportConnectionVisualizerBase::removeConnectionVisualization
virtual void removeConnectionVisualization(const TransportConnectionVisualization *connectionVisualization)
Definition: TransportConnectionVisualizerBase.cc:95
inet::visualizer::TransportConnectionVisualizerBase::icon
const char * icon
Definition: TransportConnectionVisualizerBase.h:49
inet::visualizer::TransportConnectionOsgVisualizer::networkNodeVisualizer
ModuleRefByPar< NetworkNodeOsgVisualizer > networkNodeVisualizer
Definition: TransportConnectionOsgVisualizer.h:32
inet::visualizer::ColorSet::getColor
cFigure::Color getColor(int index) const
Definition: ColorSet.cc:33