Fix crash when reading Transform from native data stream
This commit is contained in:
@@ -2268,6 +2268,11 @@ const Ray& Variant::AsRay() const
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Transform& Variant::AsTransform()
|
||||||
|
{
|
||||||
|
return *(Transform*)AsBlob.Data;
|
||||||
|
}
|
||||||
|
|
||||||
const Transform& Variant::AsTransform() const
|
const Transform& Variant::AsTransform() const
|
||||||
{
|
{
|
||||||
return *(const Transform*)AsBlob.Data;
|
return *(const Transform*)AsBlob.Data;
|
||||||
|
|||||||
@@ -332,6 +332,7 @@ public:
|
|||||||
const BoundingBox& AsBoundingBox() const;
|
const BoundingBox& AsBoundingBox() const;
|
||||||
Ray& AsRay();
|
Ray& AsRay();
|
||||||
const Ray& AsRay() const;
|
const Ray& AsRay() const;
|
||||||
|
Transform& AsTransform();
|
||||||
const Transform& AsTransform() const;
|
const Transform& AsTransform() const;
|
||||||
const Matrix& AsMatrix() const;
|
const Matrix& AsMatrix() const;
|
||||||
Array<Variant, HeapAllocation>& AsArray();
|
Array<Variant, HeapAllocation>& AsArray();
|
||||||
|
|||||||
@@ -344,7 +344,7 @@ void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Varian
|
|||||||
Deserialize(value, v.AsBoundingBox(), modifier);
|
Deserialize(value, v.AsBoundingBox(), modifier);
|
||||||
break;
|
break;
|
||||||
case VariantType::Transform:
|
case VariantType::Transform:
|
||||||
Deserialize(value, *(Transform*)v.AsBlob.Data, modifier);
|
Deserialize(value, v.AsTransform(), modifier);
|
||||||
break;
|
break;
|
||||||
case VariantType::Ray:
|
case VariantType::Ray:
|
||||||
Deserialize(value, v.AsRay(), modifier);
|
Deserialize(value, v.AsRay(), modifier);
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ void ReadStream::ReadVariant(Variant* data)
|
|||||||
ReadBytes(&data->AsData, sizeof(Quaternion));
|
ReadBytes(&data->AsData, sizeof(Quaternion));
|
||||||
break;
|
break;
|
||||||
case VariantType::Transform:
|
case VariantType::Transform:
|
||||||
ReadTransform((Transform*)&data->AsData);
|
ReadTransform(&data->AsTransform());
|
||||||
break;
|
break;
|
||||||
case VariantType::Rectangle:
|
case VariantType::Rectangle:
|
||||||
ReadBytes(&data->AsData, sizeof(Rectangle));
|
ReadBytes(&data->AsData, sizeof(Rectangle));
|
||||||
|
|||||||
Reference in New Issue
Block a user