Address the following serialization issues:
1) Ensure ObjectPtr Property can convert from SoftObjectProperty and anything else that Object Property can convert from by removing its ConvertFromType override.
2) Fix serialization of wrapped pointers through archives that don't derive from FArchiveUObject, but still expect to be able to serialize both raw and wrapped object references (FNetBitWriter, FExportArchive, and FObjectAndNameAsStringProxyArchive).
3) Restore assert in base FArchive serialization of wrapped object pointer which I had erroneously made in CL15130804 now that it is clear that it is not safe to be relying on silently not writing/reading a wrapped object pointer (even if that may be the default behavior for a raw pointer).
4) Bump Niagara custom version guid to avoid issues with incorrectly serialized data in DDC.
#jira UE-106943
#rb devin.doucette
#fyi rob.krajcarski
[CL 15178163 by Zousar Shaker in ue5-main branch]
Treat wrapped object pointers identically to raw pointers in the base FArchive implementation (they are silently ignored for serialization and do not generate an error). Some code paths (eg: Niagara) depend on this behavior for archives derived from FArchive (not FArchiveUObject).
#rb devin.doucette
[CL 15130804 by Zousar Shaker in ue5-main branch]
- FUniqueBuffer has been added as a single-ownership mutable buffer.
- FSharedBuffer remains a shared-ownership buffer and is now always immutable. In addition to the factory functions that were available previously, it can be also be created by moving FUniqueBuffer.
- FSharedBuffer is now used directly rather than requiring several pointer and reference types.
- FWeakSharedBuffer has been added as a weak reference to a shared buffer, in place of the previous weak pointer types.
- FBufferOwner has been promoted out of FSharedBuffer and can be used for advanced buffer management, including lazy buffer materialization where allocating and/or populating the buffer may be deferred until the buffer is accessed.
#jira none
#rb Zousar.Shaker
#fyi Paul.Chipchase
#rnx
[CL 14939736 by Devin Doucette in ue5-main branch]
Includes a minor optimization to TCbBufferRef::GetOuterBuffer() and adds an assert that the buffer allocator returned a valid buffer.
#jira none
#rb Zousar.Shaker
#rnx
[CL 14898497 by Devin Doucette in ue5-main branch]
- Changed GetSize, GetHash, CopyTo to always include the type.
- Changed MakeView to take an optional outer buffer parameter to mirror the shared buffer interface more closely.
- Changed GetBuffer to always return a buffer that exactly matches the view, and added GetOuterBuffer to return the outer buffer if available.
- Added TryGetSerializedView to field, array, and object to access the entire serialized value when available.
- Added an optional type parameter to the ref type constructors to make it easier to work with an external type.
- Added factory functions for iterators: MakeSingle, MakeRange, MakeRangeView, CloneRange.
- Added GetRangeSize, GetRangeHash, CopyRangeTo, GetRangeView, TryGetSerializedRangeView, GetRangeBuffer to iterators to mirror the functions on the field.
#jira none
#rb Zousar.Shaker
#rnx
[CL 14871060 by Devin Doucette in ue5-main branch]