]> git.mxchange.org Git - simgear.git/commitdiff
Add helper to get osg::Node path as string.
authorThomas Geymayer <tomgey@gmail.com>
Thu, 17 Oct 2013 11:28:54 +0000 (13:28 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Thu, 17 Oct 2013 11:28:54 +0000 (13:28 +0200)
simgear/scene/util/CMakeLists.txt
simgear/scene/util/OsgDebug.cxx [new file with mode: 0644]
simgear/scene/util/OsgDebug.hxx [new file with mode: 0644]

index 3586844e42b829675eada3f98c9f4d65ad156fe1..9dec41159b0bfe9f25aef3fe222173156cf01a19 100644 (file)
@@ -7,6 +7,7 @@ set(HEADERS
     NodeAndDrawableVisitor.hxx
     Noise.hxx
     OptionsReadFileCallback.hxx
+    OsgDebug.hxx
     OsgMath.hxx
     OsgSingleton.hxx
     parse_color.hxx
@@ -37,6 +38,7 @@ set(SOURCES
     NodeAndDrawableVisitor.cxx
     Noise.cxx
     OptionsReadFileCallback.cxx
+    OsgDebug.cxx
     parse_color.cxx
     PrimitiveUtils.cxx
     QuadTreeBuilder.cxx
diff --git a/simgear/scene/util/OsgDebug.cxx b/simgear/scene/util/OsgDebug.cxx
new file mode 100644 (file)
index 0000000..d2726e0
--- /dev/null
@@ -0,0 +1,49 @@
+// Helper for OSG related debugging
+//
+// Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library 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
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
+#include "OsgDebug.hxx"
+#include <osg/Node>
+
+namespace simgear
+{
+
+  //----------------------------------------------------------------------------
+  std::string getNodePathString(const osg::Node* node)
+  {
+    if( !node )
+      return "(nullptr)";
+
+    std::string str;
+    const osg::NodePathList& paths = node->getParentalNodePaths();
+    for(size_t i = 0; i < paths.size(); ++i)
+    {
+      if( !str.empty() )
+        str += ":";
+
+      const osg::NodePath& path = paths.at(i);
+      for(size_t j = 0; j < path.size(); ++j)
+      {
+        const osg::Node* node = path[j];
+        str += "/'" + node->getName() + "'";
+      }
+    }
+
+    return str;
+  }
+
+} // namespace simgear
diff --git a/simgear/scene/util/OsgDebug.hxx b/simgear/scene/util/OsgDebug.hxx
new file mode 100644 (file)
index 0000000..290d407
--- /dev/null
@@ -0,0 +1,36 @@
+///@file Helper for OSG related debugging
+//
+// Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library 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
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
+#ifndef OSGDEBUG_HXX_
+#define OSGDEBUG_HXX_
+
+#include <string>
+
+namespace osg { class Node; }
+namespace simgear
+{
+
+  /**
+   * Get parent path(s) of scene graph node as string.
+   */
+  std::string getNodePathString(const osg::Node* node);
+
+} // namespace simgear
+
+
+#endif /* OSGDEBUG_HXX_ */