Replaced seperate implementations with template implementations
This commit is contained in:
@@ -3256,86 +3256,18 @@ int LuaScriptEngine::setPropertyFromStack(osg::Object* object, const std::string
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC2F):
|
||||
{
|
||||
osg::Vec2f value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC3F):
|
||||
{
|
||||
osg::Vec3f value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC4F):
|
||||
{
|
||||
osg::Vec4f value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC2D):
|
||||
{
|
||||
osg::Vec2d value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC3D):
|
||||
{
|
||||
osg::Vec3d value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_VEC4D):
|
||||
{
|
||||
osg::Vec4d value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_QUAT):
|
||||
{
|
||||
osg::Quat value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case(osgDB::BaseSerializer::RW_PLANE):
|
||||
{
|
||||
osg::Plane value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case(osgDB::BaseSerializer::RW_VEC2F): if (getValueAndSetProperty<osg::Vec2f>(object, propertyName)) return 0; break;
|
||||
case(osgDB::BaseSerializer::RW_VEC3F): if (getValueAndSetProperty<osg::Vec3f>(object, propertyName)) return 0; break;
|
||||
case(osgDB::BaseSerializer::RW_VEC4F): if (getValueAndSetProperty<osg::Vec4f>(object, propertyName)) return 0; break;
|
||||
|
||||
case(osgDB::BaseSerializer::RW_VEC2D): if (getValueAndSetProperty<osg::Vec2d>(object, propertyName)) return 0; break;
|
||||
case(osgDB::BaseSerializer::RW_VEC3D): if (getValueAndSetProperty<osg::Vec3d>(object, propertyName)) return 0; break;
|
||||
case(osgDB::BaseSerializer::RW_VEC4D): if (getValueAndSetProperty<osg::Vec4d>(object, propertyName)) return 0; break;
|
||||
|
||||
case(osgDB::BaseSerializer::RW_QUAT): if (getValueAndSetProperty<osg::Quat>(object, propertyName)) return 0; break;
|
||||
case(osgDB::BaseSerializer::RW_PLANE): if (getValueAndSetProperty<osg::Plane>(object, propertyName)) return 0; break;
|
||||
|
||||
#ifdef OSG_USE_FLOAT_MATRIX
|
||||
case(osgDB::BaseSerializer::RW_MATRIX):
|
||||
#endif
|
||||
|
||||
@@ -155,6 +155,30 @@ class LuaScriptEngine : public osg::ScriptEngine
|
||||
return true;
|
||||
}
|
||||
|
||||
bool getValue(int pos, osg::Vec2b& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3b& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4b& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2ub& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3ub& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4ub& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2s& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3s& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4s& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2us& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3us& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4us& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2i& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3i& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4i& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2ui& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3ui& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4ui& value) const { return getVec4(pos, value); }
|
||||
|
||||
bool getValue(int pos, osg::Vec2f& value) const { return getVec2(pos, value); }
|
||||
bool getValue(int pos, osg::Vec3f& value) const { return getVec3(pos, value); }
|
||||
bool getValue(int pos, osg::Vec4f& value) const { return getVec4(pos, value); }
|
||||
@@ -175,6 +199,20 @@ class LuaScriptEngine : public osg::ScriptEngine
|
||||
bool getValue(int pos, osg::BoundingSpheref& value) const;
|
||||
bool getValue(int pos, osg::BoundingSphered& value) const;
|
||||
|
||||
|
||||
template<typename T>
|
||||
bool getValueAndSetProperty(osg::Object* object, const std::string& propertyName) const
|
||||
{
|
||||
T value;
|
||||
if (getValue(-1, value))
|
||||
{
|
||||
_ci.setProperty(object, propertyName, value);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void pushValue(osgDB::BaseSerializer::Type type, const void* ptr) const;
|
||||
|
||||
template<typename T>
|
||||
|
||||
Reference in New Issue
Block a user