summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Mikheev <ptmikheev@gmail.com>2022-01-15 11:25:30 +0100
committerPetr Mikheev <ptmikheev@gmail.com>2022-01-15 11:25:30 +0100
commit97d56e198fdef194d68ef597cc0d850f32637ba0 (patch)
tree98b81a5e0c331b48fd4f74472bcfd8e1d367f5f3
parent98d15884779ff6792acacf1a024a38cdaf4daeb9 (diff)
Use double precision for vectors serialization in Lua
-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;
}