Fix Transform diff serialization to properly handle prefab changes to a single component of transform

#2085
This commit is contained in:
Wojtek Figat
2024-02-20 13:12:23 +01:00
parent e255778c07
commit 8e6bd07322
3 changed files with 35 additions and 11 deletions

View File

@@ -747,9 +747,21 @@ bool Serialization::ShouldSerialize(const Transform& v, const void* otherObj)
void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Transform& v, ISerializeModifier* modifier)
{
DESERIALIZE_HELPER(stream, "Translation", v.Translation, Vector3::Zero);
DESERIALIZE_HELPER(stream, "Scale", v.Scale, Vector3::One);
DESERIALIZE_HELPER(stream, "Orientation", v.Orientation, Quaternion::Identity);
{
const auto m = SERIALIZE_FIND_MEMBER(stream, "Translation");
if (m != stream.MemberEnd())
Deserialize(m->value, v.Translation, modifier);
}
{
const auto m = SERIALIZE_FIND_MEMBER(stream, "Scale");
if (m != stream.MemberEnd())
Deserialize(m->value, v.Scale, modifier);
}
{
const auto m = SERIALIZE_FIND_MEMBER(stream, "Orientation");
if (m != stream.MemberEnd())
Deserialize(m->value, v.Orientation, modifier);
}
}
bool Serialization::ShouldSerialize(const Matrix& v, const void* otherObj)