text: //
  // Copyright (C) OpenSim Ltd.
  //
  // This program is free software; you can redistribute it and/or
  // modify it under the terms of the GNU Lesser General Public License
  // as published by the Free Software Foundation; either version 2
  // of the License, or (at your option) any later version.
  //
  // This program is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU Lesser General Public License for more details.
  //
  // You should have received a copy of the GNU Lesser General Public License
  // along with this program; if not, see <http://www.gnu.org/licenses/>.
  //
  
  #include "inet/common/ModuleAccess.h"
  #include "inet/common/OSGScene.h"
  #include "inet/common/OSGUtils.h"
  #include "inet/visualizer/scene/NetworkConnectionOsgVisualizer.h"
  
  #ifdef WITH_OSG
  #include <osg/Geode>
  #include <osg/LineWidth>
  #endif // ifdef WITH_OSG
  
  namespace inet {
  
  namespace visualizer {
  
  Define_Module(NetworkConnectionOsgVisualizer);
  
  #ifdef WITH_OSG
  
  void NetworkConnectionOsgVisualizer::initialize(int stage)
  {
      NetworkConnectionVisualizerBase::initialize(stage);
      if (!hasGUI()) return;
      if (stage == INITSTAGE_LOCAL) {
      }
  }
  
  void NetworkConnectionOsgVisualizer::createNetworkConnectionVisualization(cModule *startNetworkNode, cModule *endNetworkNode)
  {
      auto geode = new osg::Geode();
      auto drawable = inet::osg::createLineGeometry(getPosition(startNetworkNode), getPosition(endNetworkNode));
      geode->addDrawable(drawable);
      auto stateSet = inet::osg::createLineStateSet(lineColor, lineStyle, lineWidth);
      stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
      geode->setStateSet(stateSet);
      auto lineWidth = new osg::LineWidth();
      lineWidth->setWidth(this->lineWidth);
      stateSet->setAttributeAndModes(lineWidth, osg::StateAttribute::ON);
      auto scene = inet::osg::TopLevelScene::getSimulationScene(visualizerTargetModule);
      scene->addChild(geode);
  }
  
  #endif // ifdef WITH_OSG
  
  } // namespace visualizer
  
  } // namespace inet
  
  