From ebfcb177442ded8e5241671e5a71978fd6f2a514 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 26 Nov 2010 13:54:11 +0000 Subject: [PATCH] From Marin Platings and Robert Osfield, fix of Uniform unique ID by making osg::Object::setName() virtual. --- include/osg/Object | 6 +++--- include/osg/Uniform | 2 +- src/osg/Uniform.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/osg/Object b/include/osg/Object index 01dd65619..94fd616c7 100644 --- a/include/osg/Object +++ b/include/osg/Object @@ -96,13 +96,13 @@ class OSG_EXPORT Object : public Referenced /** Set the name of object using C++ style string.*/ - inline void setName( const std::string& name ) { _name = name; } + virtual void setName( const std::string& name ) { _name = name; } /** Set the name of object using a C style string.*/ inline void setName( const char* name ) { - if (name) _name = name; - else _name.clear(); + if (name) setName(std::string(name)); + else setName(std::string()); } /** Get the name of object.*/ diff --git a/include/osg/Uniform b/include/osg/Uniform index 0207f7141..1eaa0311e 100644 --- a/include/osg/Uniform +++ b/include/osg/Uniform @@ -241,7 +241,7 @@ class OSG_EXPORT Uniform : public Object Type getType() const { return _type; } /** Set the name of the glUniform, ensuring it is only set once.*/ - void setName( const std::string& name ); + virtual void setName( const std::string& name ); /** Set the length of a uniform, ensuring it is only set once (1==scalar)*/ void setNumElements( unsigned int numElements ); diff --git a/src/osg/Uniform.cpp b/src/osg/Uniform.cpp index 02e9ef1c5..b6b736b29 100644 --- a/src/osg/Uniform.cpp +++ b/src/osg/Uniform.cpp @@ -88,8 +88,8 @@ void Uniform::setName( const std::string& name ) OSG_WARN << "cannot change Uniform name" << std::endl; return; } - _name = name; - _nameID = getNameID(name); + Object::setName(name); + _nameID = getNameID(_name); } void Uniform::setNumElements( unsigned int numElements )