Previously the pools were only joined when the agent was first created.
#preflight 62bd8e73a3568e306636612a
[CL 20892143 by carl bystrom in ue5-main branch]
Also tweaked some of the reporting around each ref being replicated (making it easier to find which ref is being replicated)
#preflight none
[CL 20890538 by Joakim Lindqvist in ue5-main branch]
* ITreeStore defines an API for reading/writing named tree structures.
* ITreeStore<T> allows reading/writing trees of nodes derived from the TreeNode base class, which can be specialized by clients. TreeNode tracks whether the node has been mutated, and allows recursing through the tree with strongly typed objects. Weak references are kept to deserialized TreeNode objects to ensure synchronization with the serialized tree objects.
* Default (and only current) implementation of ITreeStore is BundleStore, which packs nodes together in an efficient binary format and supports incrementally updating bundles. Nodes are hashed and deduplicated within bundles (and the known working set of the BundleStore instance), but packed Bundles are stored using a unique id returned by IBlobStore.
* DirectoryNode and FileNode nodes allow storing file trees in bundles, and implement content-aware chunking of binary data using a rolling BuzHash over an input stream.
#fyi Joakim.Lindqvist
#preflight 62acb0a5b47403e5aef09f74
[CL 20887473 by Ben Marsh in ue5-main branch]
* Blobs are not explicitly content addressed, but each uploaded blob is given an implementation-defined BlobId for retrieval later. An implementation MAY return a hash value for a BlobId if desired.
* BlobIds are utf8 strings, with a format that is implementation defined. They may be hashes, guids, objectids, or locators within some storage hierarchy. Consumers MAY NOT assume any particular format of a BlobId.
* Blobs may reference other blobs via a table of references stored alongside (or within) it. A caller SHOULD enforce referential integrity. An implementation MAY verify and enforce it.
* Mapping from a known key to a particular blob is done via refs, using a similar interface to the existing storage interface.
* Blobs are expected to be small enough to fit into memory. Larger blobs should be split up. Max size is TBD; probably of the order of 1-10mb.
Abstracting blob storage at this level allows for simpler implementations where use cases allow it, such as writing directly to S3 or a filer, and allows for changes in the way we address blobs to allow them to be retrieved from locations encoded in the BlobId without having to ensure global replication.
#preflight 62bced9e3f0d6beee24f2d6b
[CL 20887285 by Ben Marsh in ue5-main branch]
- add PhysicsAsset option to select linear or non-linear joint solver for RBAN (old assets default to non-linear, new to linear)
- optimize joint SLerp drive (asin approximation and quaternion to axes)
- add unit tests for AsinEst
#jira UE-157785
#rb cedric.caillaud, michael.forot
#preflight 62bcadcfb447118888a10aaf
#ROBOMERGE-OWNER: chris.caulfield
#ROBOMERGE-AUTHOR: chris.caulfield
#ROBOMERGE-SOURCE: CL 20881652 via CL 20881788 via CL 20882418
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20885785 by chris caulfield in ue5-main branch]
#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 20868817 via CL 20879830 via CL 20880045
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20885587 by ben woodhouse in ue5-main branch]
#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 20866821 via CL 20878760 via CL 20878900
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20880929 by ben woodhouse in ue5-main branch]
#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 20866738 via CL 20878718 via CL 20878884
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20880915 by ben woodhouse in ue5-main branch]