diff --git a/Source/Engine/Core/Types/Variant.cpp b/Source/Engine/Core/Types/Variant.cpp index 227d6708f..5bf8dbf88 100644 --- a/Source/Engine/Core/Types/Variant.cpp +++ b/Source/Engine/Core/Types/Variant.cpp @@ -2268,6 +2268,11 @@ const Ray& Variant::AsRay() const #endif } +Transform& Variant::AsTransform() +{ + return *(Transform*)AsBlob.Data; +} + const Transform& Variant::AsTransform() const { return *(const Transform*)AsBlob.Data; diff --git a/Source/Engine/Core/Types/Variant.h b/Source/Engine/Core/Types/Variant.h index bfb7c14b0..33ad6df19 100644 --- a/Source/Engine/Core/Types/Variant.h +++ b/Source/Engine/Core/Types/Variant.h @@ -332,6 +332,7 @@ public: const BoundingBox& AsBoundingBox() const; Ray& AsRay(); const Ray& AsRay() const; + Transform& AsTransform(); const Transform& AsTransform() const; const Matrix& AsMatrix() const; Array& AsArray(); diff --git a/Source/Engine/Serialization/Serialization.cpp b/Source/Engine/Serialization/Serialization.cpp index 163a65d2b..2d6a8b4b8 100644 --- a/Source/Engine/Serialization/Serialization.cpp +++ b/Source/Engine/Serialization/Serialization.cpp @@ -344,7 +344,7 @@ void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Varian Deserialize(value, v.AsBoundingBox(), modifier); break; case VariantType::Transform: - Deserialize(value, *(Transform*)v.AsBlob.Data, modifier); + Deserialize(value, v.AsTransform(), modifier); break; case VariantType::Ray: Deserialize(value, v.AsRay(), modifier); diff --git a/Source/Engine/Serialization/Stream.cpp b/Source/Engine/Serialization/Stream.cpp index caf24c1ff..78adbe2c1 100644 --- a/Source/Engine/Serialization/Stream.cpp +++ b/Source/Engine/Serialization/Stream.cpp @@ -438,7 +438,7 @@ void ReadStream::ReadVariant(Variant* data) ReadBytes(&data->AsData, sizeof(Quaternion)); break; case VariantType::Transform: - ReadTransform((Transform*)&data->AsData); + ReadTransform(&data->AsTransform()); break; case VariantType::Rectangle: ReadBytes(&data->AsData, sizeof(Rectangle));