From 6c7c2e32df516eb58c7de8f6ddb261e8161a03cd Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 18 Oct 2004 14:51:21 +0000 Subject: [PATCH] From Marco Jez, "makes the LWS loader store LWO object names as node names, for easier recognition and retrieval by scene graph visitors. With this fix, each PositionAttitudeTransform node that corresponds to an entry in the LWS file carries the name of the loaded object plus the layer number (for example, "objects/myobj.lwo.2")." --- src/osgPlugins/lws/SceneLoader.cpp | 6 +++++- src/osgPlugins/lws/SceneLoader.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osgPlugins/lws/SceneLoader.cpp b/src/osgPlugins/lws/SceneLoader.cpp index 224a35c88..bbb7ce778 100644 --- a/src/osgPlugins/lws/SceneLoader.cpp +++ b/src/osgPlugins/lws/SceneLoader.cpp @@ -154,6 +154,7 @@ osg::Group *SceneLoader::load(const std::string &filename, bool search) osg::ref_ptr pat = pats[j]; if (!pat.valid()) { pat = new osg::PositionAttitudeTransform; + pat->setName(i->name); pats[j] = pat; } @@ -252,11 +253,14 @@ bool SceneLoader::parse_block(const std::string &name, const std::string &data) } Scene_object so; + std::ostringstream oss; + oss << filename << "." << layer; + so.name = oss.str(); so.layer_node = objnode->getChild(layer-1); if (so.layer_node.valid()) { scene_objects_.push_back(so); } - } + } } if (name == "PivotPosition") { diff --git a/src/osgPlugins/lws/SceneLoader.h b/src/osgPlugins/lws/SceneLoader.h index 382b2fff2..9fca12055 100644 --- a/src/osgPlugins/lws/SceneLoader.h +++ b/src/osgPlugins/lws/SceneLoader.h @@ -100,6 +100,7 @@ namespace lwosg osg::Vec3 pivot; osg::Vec3 pivot_rot; Motion_envelope motion; + std::string name; Scene_object(): parent(-1) {} };