Improved the speed of the ValueObject get/setting by utilizing typeid() and static_cast<> in place of original dynamic_cast<>'s

This commit is contained in:
Robert Osfield
2016-02-04 13:10:28 +00:00
parent d8d37e3da7
commit b4eb8d4597
3 changed files with 83 additions and 9 deletions

View File

@@ -39,6 +39,14 @@ class OSG_EXPORT UserDataContainer : public osg::Object
by derived classes.*/
virtual const char* className() const { return "UserDataContainer"; }
/** Convert 'this' into a UserDataContainer pointer if Object is a UserDataContainer, otherwise return 0.
* Equivalent to dynamic_cast<UserDataContainer*>(this).*/
virtual UserDataContainer* asUserDataContainer() { return this; }
/** convert 'const this' into a const UserDataContainer pointer if Object is a UserDataContainer, otherwise return 0.
* Equivalent to dynamic_cast<const UserDataContainer*>(this).*/
virtual const UserDataContainer* asUserDataContainer() const { return this; }
/**
* Set user data, data must be subclassed from Referenced to allow
* automatic memory handling. If your own data isn't directly
@@ -209,7 +217,6 @@ inline const Object* getUserObject(const osg::Object* object, const std::string&
return udc ? udc->getUserObject(name) : 0;
}
}
#endif