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

#include <MobilityOsgVisualizer.h>

Inheritance diagram for inet::visualizer::MobilityOsgVisualizer:
inet::visualizer::MobilityVisualizerBase inet::visualizer::VisualizerBase

Classes

class  MobilityOsgVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual MobilityVisualizationcreateMobilityVisualization (IMobility *mobility) override
 
virtual void addMobilityVisualization (const IMobility *mobility, MobilityVisualization *mobilityVisualization) override
 
virtual void removeMobilityVisualization (const MobilityVisualization *mobilityVisualization) override
 
virtual void extendMovementTrail (osg::Geode *trail, const Coord &position) const
 
- Protected Member Functions inherited from inet::visualizer::MobilityVisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual MobilityVisualizationgetMobilityVisualization (const IMobility *mobility) const
 
virtual void removeAllMobilityVisualizations ()
 
- 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::MobilityVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 
- Protected Attributes inherited from inet::visualizer::MobilityVisualizerBase
bool displayMobility = false
 
double animationSpeed = NaN
 
ModuleFilter moduleFilter
 
bool displayPositions = false
 
double positionCircleRadius = NaN
 
double positionCircleLineWidth = NaN
 
ColorSet positionCircleLineColorSet
 
ColorSet positionCircleFillColorSet
 
bool displayOrientations = false
 
double orientationPieRadius = NaN
 
double orientationPieSize = NaN
 
double orientationPieOpacity = NaN
 
cFigure::Color orientationLineColor
 
cFigure::LineStyle orientationLineStyle
 
double orientationLineWidth = NaN
 
cFigure::Color orientationFillColor
 
bool displayVelocities = false
 
double velocityArrowScale = NaN
 
cFigure::Color velocityLineColor
 
cFigure::LineStyle velocityLineStyle
 
double velocityLineWidth = NaN
 
bool displayMovementTrails = false
 
bool autoMovementTrailLineColor = false
 
ColorSet movementTrailLineColorSet
 
cFigure::LineStyle movementTrailLineStyle
 
double movementTrailLineWidth = NaN
 
int trailLength = -1
 
std::map< int, MobilityVisualization * > mobilityVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addMobilityVisualization()

void inet::visualizer::MobilityOsgVisualizer::addMobilityVisualization ( const IMobility mobility,
MobilityVisualization mobilityVisualization 
)
overrideprotectedvirtual

Reimplemented from inet::visualizer::MobilityVisualizerBase.

62 {
63  MobilityVisualizerBase::addMobilityVisualization(mobility, mobilityVisualization);
64  auto mobilityOsgVisualization = static_cast<MobilityOsgVisualization *>(mobilityVisualization);
67  scene->addChild(mobilityOsgVisualization->trail);
68 }

◆ createMobilityVisualization()

MobilityOsgVisualizer::MobilityVisualization * inet::visualizer::MobilityOsgVisualizer::createMobilityVisualization ( IMobility mobility)
overrideprotectedvirtual

Implements inet::visualizer::MobilityVisualizerBase.

53 {
54  auto module = const_cast<cModule *>(check_and_cast<const cModule *>(mobility));
55  auto trail = new osg::Geode();
56  trail->setStateSet(inet::osg::createStateSet(movementTrailLineColorSet.getColor(module->getId()), 1.0));
57  trail->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
58  return new MobilityOsgVisualization(trail, mobility);
59 }

◆ extendMovementTrail()

void inet::visualizer::MobilityOsgVisualizer::extendMovementTrail ( osg::Geode *  trail,
const Coord position 
) const
protectedvirtual
80 {
81  if (trail->getNumDrawables() == 0)
82  trail->addDrawable(inet::osg::createLineGeometry(position, position));
83  else {
84  auto drawable = static_cast<osg::Geometry *>(trail->getDrawable(0));
85  auto vertices = static_cast<osg::Vec3Array *>(drawable->getVertexArray());
86  auto lastPosition = vertices->at(vertices->size() - 1);
87  auto dx = lastPosition.x() - position.x;
88  auto dy = lastPosition.y() - position.y;
89  auto dz = lastPosition.z() - position.z;
90  // TODO 1?
91  if (dx * dx + dy * dy + dz * dz > 1) {
92  vertices->push_back(osg::Vec3d(position.x, position.y, position.z));
93  if ((int)vertices->size() > trailLength)
94  vertices->erase(vertices->begin(), vertices->begin() + 1);
95  auto drawArrays = static_cast<osg::DrawArrays *>(drawable->getPrimitiveSet(0));
96  drawArrays->setFirst(0);
97  drawArrays->setCount(vertices->size());
98  drawable->dirtyBound();
99  drawable->dirtyDisplayList();
100  }
101  }
102 }

Referenced by refreshDisplay().

◆ initialize()

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

Reimplemented from inet::visualizer::MobilityVisualizerBase.

33 {
35  if (!hasGUI()) return;
36 }

◆ refreshDisplay()

void inet::visualizer::MobilityOsgVisualizer::refreshDisplay ( ) const
overrideprotectedvirtual
39 {
40  MobilityVisualizerBase::refreshDisplay();
41  for (auto it : mobilityVisualizations) {
42  auto mobilityVisualization = static_cast<MobilityOsgVisualization *>(it.second);
43  auto mobility = mobilityVisualization->mobility;
44  auto position = mobility->getCurrentPosition();
46  extendMovementTrail(mobilityVisualization->trail, position);
47  }
48  // TODO switch to osg Osg when API is extended
49  visualizationTargetModule->getCanvas()->setAnimationSpeed(mobilityVisualizations.empty() ? 0 : animationSpeed, this);
50 }

◆ removeMobilityVisualization()

void inet::visualizer::MobilityOsgVisualizer::removeMobilityVisualization ( const MobilityVisualization mobilityVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::MobilityVisualizerBase.

71 {
72  auto mobilityOsgVisualization = static_cast<const MobilityOsgVisualization *>(mobilityVisualization);
75  scene->removeChild(mobilityOsgVisualization->trail);
77 }

The documentation for this class was generated from the following files:
inet::visualizer::MobilityVisualizerBase::trailLength
int trailLength
Definition: MobilityVisualizerBase.h:65
inet::visualizer::MobilityVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: MobilityVisualizerBase.cc:29
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::osg::createLineGeometry
Geometry * createLineGeometry(const Coord &start, const Coord &end)
Definition: OsgUtils.cc:57
inet::osg::TopLevelScene::getSimulationScene
virtual SimulationScene * getSimulationScene()
Definition: OsgScene.cc:22
inet::visualizer::MobilityVisualizerBase::movementTrailLineColorSet
ColorSet movementTrailLineColorSet
Definition: MobilityVisualizerBase.h:62
inet::visualizer::MobilityVisualizerBase::mobilityVisualizations
std::map< int, MobilityVisualization * > mobilityVisualizations
Definition: MobilityVisualizerBase.h:68
inet::visualizer::MobilityVisualizerBase::addMobilityVisualization
virtual void addMobilityVisualization(const IMobility *mobility, MobilityVisualization *mobilityVisualization)
Definition: MobilityVisualizerBase.cc:101
inet::osg::createStateSet
StateSet * createStateSet(const cFigure::Color &color, double opacity, bool cullBackFace)
Definition: OsgUtils.cc:273
inet::visualizer::MobilityVisualizerBase::displayMovementTrails
bool displayMovementTrails
Definition: MobilityVisualizerBase.h:60
inet::visualizer::MobilityVisualizerBase::removeMobilityVisualization
virtual void removeMobilityVisualization(const MobilityVisualization *visualization)
Definition: MobilityVisualizerBase.cc:106
inet::visualizer::MobilityOsgVisualizer::extendMovementTrail
virtual void extendMovementTrail(osg::Geode *trail, const Coord &position) const
Definition: MobilityOsgVisualizer.cc:79
inet::visualizer::MobilityVisualizerBase::animationSpeed
double animationSpeed
Definition: MobilityVisualizerBase.h:36
inet::visualizer::ColorSet::getColor
cFigure::Color getColor(int index) const
Definition: ColorSet.cc:33