diff --git a/Source/Engine/Serialization/ReadStream.h b/Source/Engine/Serialization/ReadStream.h index 9d3215442..26b536c6d 100644 --- a/Source/Engine/Serialization/ReadStream.h +++ b/Source/Engine/Serialization/ReadStream.h @@ -159,6 +159,34 @@ public: Read(ptr); v = ptr; } + template + FORCE_INLINE void Read(SoftObjectReference& v) + { + uint32 id[4]; + ReadBytes(id, sizeof(id)); + v.Set(*(Guid*)id); + } + template + FORCE_INLINE void Read(AssetReference& v) + { + uint32 id[4]; + ReadBytes(id, sizeof(id)); + v = (T*)::LoadAsset(*(Guid*)id, T::TypeInitializer); + } + template + FORCE_INLINE void Read(WeakAssetReference& v) + { + uint32 id[4]; + ReadBytes(id, sizeof(id)); + v = (T*)::LoadAsset(*(Guid*)id, T::TypeInitializer); + } + template + FORCE_INLINE void Read(SoftAssetReference& v) + { + uint32 id[4]; + ReadBytes(id, sizeof(id)); + v.Set(*(Guid*)id); + } /// /// Read data array diff --git a/Source/Engine/Serialization/Stream.h b/Source/Engine/Serialization/Stream.h index 83f0eaf21..e477eee95 100644 --- a/Source/Engine/Serialization/Stream.h +++ b/Source/Engine/Serialization/Stream.h @@ -17,6 +17,14 @@ class ISerializable; class ScriptingObject; template class ScriptingObjectReference; +template +class SoftObjectReference; +template +class AssetReference; +template +class WeakAssetReference; +template +class SoftAssetReference; /// /// Base class for all data streams (memory streams, file streams etc.) diff --git a/Source/Engine/Serialization/WriteStream.h b/Source/Engine/Serialization/WriteStream.h index 92ac211ca..95bd87df9 100644 --- a/Source/Engine/Serialization/WriteStream.h +++ b/Source/Engine/Serialization/WriteStream.h @@ -176,6 +176,26 @@ public: { Write(v.Get()); } + template + FORCE_INLINE void Write(const SoftObjectReference& v) + { + Write(v.Get()); + } + template + FORCE_INLINE void Write(const AssetReference& v) + { + Write(v.Get()); + } + template + FORCE_INLINE void Write(const WeakAssetReference& v) + { + Write(v.Get()); + } + template + FORCE_INLINE void Write(const SoftAssetReference& v) + { + Write(v.Get()); + } template void Write(const Array& data)