Improved support for setting/getting properties via the osg::UserDataContainer.

This commit is contained in:
Robert Osfield
2014-02-11 18:07:37 +00:00
parent e3a003a08f
commit 2797e8cb7c
4 changed files with 60 additions and 8 deletions

View File

@@ -537,6 +537,8 @@ public:
int LuaScriptEngine::pushPropertyToStack(osg::Object* object, const std::string& propertyName) const
{
OSG_NOTICE<<"LuaScriptEngine::pushPropertyToStack("<<object<<", "<<propertyName<<")"<<std::endl;
osgDB::BaseSerializer::Type type;
if (!_pi.getPropertyType(object, propertyName, type))
{
@@ -549,15 +551,20 @@ int LuaScriptEngine::pushPropertyToStack(osg::Object* object, const std::string&
return 1;
}
osg::CallbackObject* co = osg::getCallbackObject(object, propertyName);
LuaCallbackObject* lco = dynamic_cast<LuaCallbackObject*>(co);
osg::Object* uo = osg::getUserObject(object, propertyName);
LuaCallbackObject* lco = dynamic_cast<LuaCallbackObject*>(uo);
if (lco)
{
lua_rawgeti(_lua, LUA_REGISTRYINDEX, lco->getRef());
return 1;
}
else if (uo)
{
pushObject(uo);
return 1;
}
OSG_INFO<<"LuaScriptEngine::pushPropertyToStack("<<object<<", "<<propertyName<<") no property found."<<std::endl;
OSG_NOTICE<<"LuaScriptEngine::pushPropertyToStack("<<object<<", "<<propertyName<<") no property found."<<std::endl;
return 0;
}