summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruramer <antonuramer@gmail.com>2022-01-15 16:14:04 +0000
committeruramer <antonuramer@gmail.com>2022-01-15 16:14:04 +0000
commitae641811cfd367a750894c5e5e5fcaeb4484caad (patch)
treeafd819f6526132467cc6d36bea62b551fc3ba5c4
parent2700fa37dfae1a80e9595cb2f13890fa3401b6d8 (diff)
parent97d56e198fdef194d68ef597cc0d850f32637ba0 (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.cpp6
-rw-r--r--components/lua/serialization.cpp20
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;
}