Added createObject() interface

This commit is contained in:
Robert Osfield
2013-10-04 16:29:45 +00:00
parent b5b020a138
commit c77dc4fe9e
2 changed files with 11 additions and 1 deletions

View File

@@ -126,6 +126,10 @@ public:
bool areTypesCompatible(osgDB::BaseSerializer::Type lhs, osgDB::BaseSerializer::Type rhs) const;
/** create an object of specified type for provided compound class name in the form libraryName::className. */
osg::Object* createObject(const std::string& compounClassdName) const;
/// template method for getting property data, return true if property available and the type is compatible, otherwise returns false.
template<typename T>
bool getProperty(const osg::Object* object, const std::string& propertyName, T& value);
@@ -212,4 +216,4 @@ bool PropertyInterface::setProperty(osg::Object* object, const std::string& prop
}
#endif
#endif

View File

@@ -282,6 +282,12 @@ osgDB::BaseSerializer* PropertyInterface::getSerializer(const osg::Object* objec
return ow ? ow->getSerializer(propertyName, type) : 0;
}
osg::Object* PropertyInterface::createObject(const std::string& compoundClassName) const
{
osgDB::ObjectWrapper* ow = osgDB::Registry::instance()->getObjectWrapperManager()->findWrapper(compoundClassName);
return (ow!=0) ? ow->createInstance() : 0;
}
bool PropertyInterface::copyPropertyDataFromObject(const osg::Object* object, const std::string& propertyName, void* valuePtr, unsigned int valueSize, osgDB::BaseSerializer::Type valueType)
{
_poi->flush();