2.8 branch: Merge 11959 from trunk. Makes Object::setName() virtual, which fixes an issue with the uniform name ID mechanism.

This commit is contained in:
Paul MARTZ
2011-06-04 00:07:59 +00:00
parent 0aab63cfba
commit 9e8c1b033e
3 changed files with 9 additions and 5 deletions

View File

@@ -96,10 +96,14 @@ 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 ) { _name = name; }
inline void setName( const char* name )
{
if (name) setName(std::string(name));
else setName(std::string());
}
/** Get the name of object.*/
inline const std::string& getName() const { return _name; }

View File

@@ -232,7 +232,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 );

View File

@@ -88,8 +88,8 @@ void Uniform::setName( const std::string& name )
osg::notify(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 )