diff options
author | uramer <antonuramer@gmail.com> | 2022-01-15 16:14:04 +0000 |
---|---|---|
committer | uramer <antonuramer@gmail.com> | 2022-01-15 16:14:04 +0000 |
commit | ae641811cfd367a750894c5e5e5fcaeb4484caad (patch) | |
tree | afd819f6526132467cc6d36bea62b551fc3ba5c4 | |
parent | 2700fa37dfae1a80e9595cb2f13890fa3401b6d8 (diff) | |
parent | 97d56e198fdef194d68ef597cc0d850f32637ba0 (diff) |
Merge branch 'lua_vector' into 'master'
Use double precision for vectors serialization in Lua
See merge request OpenMW/openmw!1558
-rw-r--r-- | apps/openmw_test_suite/lua/test_serialization.cpp | 6 | ||||
-rw-r--r-- | components/lua/serialization.cpp | 20 |
2 files changed, 13 insertions, 13 deletions
diff --git a/apps/openmw_test_suite/lua/test_serialization.cpp b/apps/openmw_test_suite/lua/test_serialization.cpp index 57a1070c83..1d664b06a4 100644 --- a/apps/openmw_test_suite/lua/test_serialization.cpp +++ b/apps/openmw_test_suite/lua/test_serialization.cpp @@ -93,14 +93,14 @@ namespace { std::string serialized = LuaUtil::serialize(sol::make_object(lua, vec2)); - EXPECT_EQ(serialized.size(), 10); // version, type, 2x float + EXPECT_EQ(serialized.size(), 18); // version, type, 2x double sol::object value = LuaUtil::deserialize(lua, serialized); ASSERT_TRUE(value.is<osg::Vec2f>()); EXPECT_EQ(value.as<osg::Vec2f>(), vec2); } { std::string serialized = LuaUtil::serialize(sol::make_object(lua, vec3)); - EXPECT_EQ(serialized.size(), 14); // version, type, 3x float + EXPECT_EQ(serialized.size(), 26); // version, type, 3x double sol::object value = LuaUtil::deserialize(lua, serialized); ASSERT_TRUE(value.is<osg::Vec3f>()); EXPECT_EQ(value.as<osg::Vec3f>(), vec3); @@ -149,7 +149,7 @@ namespace table[2] = osg::Vec2f(2, 1); std::string serialized = LuaUtil::serialize(table); - EXPECT_EQ(serialized.size(), 123); + EXPECT_EQ(serialized.size(), 139); sol::table res_table = LuaUtil::deserialize(lua, serialized); sol::table res_readonly_table = LuaUtil::deserialize(lua, serialized, nullptr, true); diff --git a/components/lua/serialization.cpp b/components/lua/serialization.cpp index 8b18294449..e8f66c698c 100644 --- a/components/lua/serialization.cpp +++ b/components/lua/serialization.cpp @@ -99,17 +99,17 @@ namespace LuaUtil { appendType(out, SerializedType::VEC2); osg::Vec2f v = data.as<osg::Vec2f>(); - appendValue<float>(out, v.x()); - appendValue<float>(out, v.y()); + appendValue<double>(out, v.x()); + appendValue<double>(out, v.y()); return; } if (data.is<osg::Vec3f>()) { appendType(out, SerializedType::VEC3); osg::Vec3f v = data.as<osg::Vec3f>(); - appendValue<float>(out, v.x()); - appendValue<float>(out, v.y()); - appendValue<float>(out, v.z()); + appendValue<double>(out, v.x()); + appendValue<double>(out, v.y()); + appendValue<double>(out, v.z()); return; } if (data.is<TransformM>()) @@ -241,16 +241,16 @@ namespace LuaUtil throw std::runtime_error("Unexpected end of table during deserialization."); case SerializedType::VEC2: { - float x = getValue<float>(binaryData); - float y = getValue<float>(binaryData); + float x = getValue<double>(binaryData); + float y = getValue<double>(binaryData); sol::stack::push<osg::Vec2f>(lua, osg::Vec2f(x, y)); return; } case SerializedType::VEC3: { - float x = getValue<float>(binaryData); - float y = getValue<float>(binaryData); - float z = getValue<float>(binaryData); + float x = getValue<double>(binaryData); + float y = getValue<double>(binaryData); + float z = getValue<double>(binaryData); sol::stack::push<osg::Vec3f>(lua, osg::Vec3f(x, y, z)); return; } |