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

#include <TracingObstacleLossOsgVisualizer.h>

Inheritance diagram for inet::visualizer::TracingObstacleLossOsgVisualizer:
inet::visualizer::TracingObstacleLossVisualizerBase inet::visualizer::VisualizerBase

Classes

class  ObstacleLossOsgVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual const ObstacleLossVisualizationcreateObstacleLossVisualization (const physicallayer::ITracingObstacleLoss::ObstaclePenetratedEvent *obstaclePenetratedEvent) const override
 
virtual void addObstacleLossVisualization (const ObstacleLossVisualization *obstacleLossVisualization) override
 
virtual void removeObstacleLossVisualization (const ObstacleLossVisualization *obstacleLossVisualization) override
 
virtual void setAlpha (const ObstacleLossVisualization *obstacleLossVisualization, double alpha) const override
 
- Protected Member Functions inherited from inet::visualizer::TracingObstacleLossVisualizerBase
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual void removeAllObstacleLossVisualizations ()
 
- 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

osg::Group * obstacleLossNode = nullptr
 
- Protected Attributes inherited from inet::visualizer::TracingObstacleLossVisualizerBase
bool displayIntersections = false
 
cFigure::Color intersectionLineColor
 
cFigure::LineStyle intersectionLineStyle
 
double intersectionLineWidth = NaN
 
bool displayFaceNormalVectors = false
 
cFigure::Color faceNormalLineColor
 
cFigure::LineStyle faceNormalLineStyle
 
double faceNormalLineWidth = NaN
 
const char * fadeOutMode = nullptr
 
double fadeOutTime = NaN
 
double fadeOutAnimationSpeed = NaN
 
std::vector< const ObstacleLossVisualization * > obstacleLossVisualizations
 
- 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::TracingObstacleLossVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 

Member Function Documentation

◆ addObstacleLossVisualization()

void inet::visualizer::TracingObstacleLossOsgVisualizer::addObstacleLossVisualization ( const ObstacleLossVisualization obstacleLossVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

80 {
82  auto obstacleLossOsgVisualization = static_cast<const ObstacleLossOsgVisualization *>(obstacleLossVisualization);
84  scene->addChild(obstacleLossOsgVisualization->node);
85 }

◆ createObstacleLossVisualization()

const TracingObstacleLossVisualizerBase::ObstacleLossVisualization * inet::visualizer::TracingObstacleLossOsgVisualizer::createObstacleLossVisualization ( const physicallayer::ITracingObstacleLoss::ObstaclePenetratedEvent obstaclePenetratedEvent) const
overrideprotectedvirtual

Implements inet::visualizer::TracingObstacleLossVisualizerBase.

45 {
46  auto object = obstaclePenetratedEvent->object;
47  auto intersection1 = obstaclePenetratedEvent->intersection1;
48  auto intersection2 = obstaclePenetratedEvent->intersection2;
49  auto normal1 = obstaclePenetratedEvent->normal1;
50  auto normal2 = obstaclePenetratedEvent->normal2;
51  // TODO display auto loss = obstaclePenetratedEvent->loss;
52  const RotationMatrix rotation(object->getOrientation().toEulerAngles());
53  const Coord& position = object->getPosition();
54  const Coord rotatedIntersection1 = rotation.rotateVector(intersection1);
55  const Coord rotatedIntersection2 = rotation.rotateVector(intersection2);
56  double intersectionDistance = intersection2.distance(intersection1);
57  auto group = new osg::Group();
59  auto geometry = inet::osg::createLineGeometry(rotatedIntersection1 + position, rotatedIntersection2 + position);
60  auto geode = new osg::Geode();
61  geode->addDrawable(geometry);
63  group->addChild(geode);
64  }
66  Coord normalVisualization1 = normal1 / normal1.length() * intersectionDistance / 10;
67  Coord normalVisualization2 = normal2 / normal2.length() * intersectionDistance / 10;
68  auto geometry1 = inet::osg::createLineGeometry(rotatedIntersection1 + position, rotatedIntersection1 + position + rotation.rotateVector(normalVisualization1));
69  auto geometry2 = inet::osg::createLineGeometry(rotatedIntersection2 + position, rotatedIntersection2 + position + rotation.rotateVector(normalVisualization2));
70  auto geode = new osg::Geode();
71  geode->addDrawable(geometry1);
72  geode->addDrawable(geometry2);
74  group->addChild(geode);
75  }
76  return new ObstacleLossOsgVisualization(group);
77 }

◆ initialize()

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

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

27 {
29  if (!hasGUI()) return;
30  if (stage == INITSTAGE_LOCAL) {
31  obstacleLossNode = new osg::Group();
33  scene->addChild(obstacleLossNode);
34  }
35 }

◆ refreshDisplay()

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

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

38 {
40  // TODO switch to osg canvas when API is extended
41  visualizationTargetModule->getCanvas()->setAnimationSpeed(obstacleLossVisualizations.empty() ? 0 : fadeOutAnimationSpeed, this);
42 }

◆ removeObstacleLossVisualization()

void inet::visualizer::TracingObstacleLossOsgVisualizer::removeObstacleLossVisualization ( const ObstacleLossVisualization obstacleLossVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

88 {
90  auto obstacleLossOsgVisualization = static_cast<const ObstacleLossOsgVisualization *>(obstacleLossVisualization);
91  auto node = obstacleLossOsgVisualization->node;
92  node->getParent(0)->removeChild(node);
93 }

◆ setAlpha()

void inet::visualizer::TracingObstacleLossOsgVisualizer::setAlpha ( const ObstacleLossVisualization obstacleLossVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::TracingObstacleLossVisualizerBase.

96 {
97  auto obstacleLossOsgVisualization = static_cast<const ObstacleLossOsgVisualization *>(obstacleLossVisualization);
98  auto node = obstacleLossOsgVisualization->node;
99  for (unsigned int i = 0; i < node->getNumChildren(); i++) {
100  auto material = static_cast<osg::Material *>(node->getChild(i)->getOrCreateStateSet()->getAttribute(osg::StateAttribute::MATERIAL));
101  material->setAlpha(osg::Material::FRONT_AND_BACK, alpha);
102  }
103 }

Member Data Documentation

◆ obstacleLossNode

osg::Group* inet::visualizer::TracingObstacleLossOsgVisualizer::obstacleLossNode = nullptr
protected

The documentation for this class was generated from the following files:
inet::visualizer::TracingObstacleLossVisualizerBase::fadeOutAnimationSpeed
double fadeOutAnimationSpeed
Definition: TracingObstacleLossVisualizerBase.h:44
inet::visualizer::TracingObstacleLossVisualizerBase::displayIntersections
bool displayIntersections
Definition: TracingObstacleLossVisualizerBase.h:34
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineStyle
cFigure::LineStyle faceNormalLineStyle
Definition: TracingObstacleLossVisualizerBase.h:40
inet::visualizer::TracingObstacleLossVisualizerBase::removeObstacleLossVisualization
virtual void removeObstacleLossVisualization(const ObstacleLossVisualization *obstacleLossVisualization)
Definition: TracingObstacleLossVisualizerBase.cc:108
inet::visualizer::TracingObstacleLossVisualizerBase::addObstacleLossVisualization
virtual void addObstacleLossVisualization(const ObstacleLossVisualization *obstacleLossVisualization)
Definition: TracingObstacleLossVisualizerBase.cc:103
inet::osg::createLineStateSet
StateSet * createLineStateSet(const cFigure::Color &color, const cFigure::LineStyle &style, double width, bool overlay)
Definition: OsgUtils.cc:293
inet::visualizer::TracingObstacleLossVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: TracingObstacleLossVisualizerBase.cc:29
inet::visualizer::TracingObstacleLossVisualizerBase::refreshDisplay
virtual void refreshDisplay() const override
Definition: TracingObstacleLossVisualizerBase.cc:50
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::TracingObstacleLossVisualizerBase::intersectionLineColor
cFigure::Color intersectionLineColor
Definition: TracingObstacleLossVisualizerBase.h:35
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineColor
cFigure::Color faceNormalLineColor
Definition: TracingObstacleLossVisualizerBase.h:39
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::TracingObstacleLossVisualizerBase::displayFaceNormalVectors
bool displayFaceNormalVectors
Definition: TracingObstacleLossVisualizerBase.h:38
inet::visualizer::TracingObstacleLossVisualizerBase::obstacleLossVisualizations
std::vector< const ObstacleLossVisualization * > obstacleLossVisualizations
Definition: TracingObstacleLossVisualizerBase.h:47
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineWidth
double faceNormalLineWidth
Definition: TracingObstacleLossVisualizerBase.h:41
inet::units::constants::alpha
const value< double, units::unit > alpha(7.2973525376e-3)
inet::visualizer::TracingObstacleLossVisualizerBase::intersectionLineStyle
cFigure::LineStyle intersectionLineStyle
Definition: TracingObstacleLossVisualizerBase.h:36
inet::visualizer::TracingObstacleLossOsgVisualizer::obstacleLossNode
osg::Group * obstacleLossNode
Definition: TracingObstacleLossOsgVisualizer.h:31
inet::visualizer::TracingObstacleLossVisualizerBase::intersectionLineWidth
double intersectionLineWidth
Definition: TracingObstacleLossVisualizerBase.h:37