- Fixed issue with tearoff of actor with subobject triggering ensure
- Added test recreating the bug
- Added Description string parameter to FReplicationSystemTestNode packet sending methods to facilitate logging of more context when writing tests
#rb LouisPhilippe.Sequin
[CL 26484421 by mattias hornlund in 5.3 branch]
* Poll configs are now set using Frequency (updates per second) instead of frames between polls.
* This allows the poll configs to work with any type of server tick rate
* Added ability to recover a given object's poll frequency via GetPollFrequencyOfRootObject
* ActorReplicationBridge will now listen to changes in server tick rates and reinitalize the poll frame updates of all objects via ReinitPollFrequency()
#jira UE-185786
#rb Peter.Engstorm
#rnx
[CL 25894242 by louisphilippe seguin in ue5-main branch]
* Formalize the concept of ForceNetUpdate by splitting MarkDirty and ForceNetUpdate into seperate lists.
* Now dirty objects will not be forced to be polled immediately anymore. It's only if you call ForceNetUpdate that you can skip your polling frequency.
* Another exeception is when a subobject gets added to a root object. There we are forcing a call to ForceNetUpdate.
* Added code to ensure that only the currently updated object can be marked dirty during the poll phase.
#jira UE-181952
#rb Peter.Engstorm, Mattias.Hornlund
#rnx
[CL 25814811 by louisphilippe seguin in ue5-main branch]
Added GetArrayHash() for hashing arrays by their contents.
Added a new pair of keyfuncs for TSets and TMaps which allow TCHAR* keys (or TCHAR* values passed to *ByHash functions) to be hashed by FCrc::Strihash_DEPRECATED().
#rb devin.doucette
#preflight 64708e7c296b2b37c6fd894a
[CL 25647216 by steve robb in ue5-main branch]
- Implemented support for capturing object references when using the LastResortNetSerializer
#rb Peter.Engstsrom
#preflight 646decce1417daba1ed2851f
[CL 25635250 by mattias hornlund in ue5-main branch]
* Added unit test for delaying dirty objects when culled.
#jira UE-184028
#rb Peter.Engstorm
#rnx
[CL 25447831 by louisphilippe seguin in ue5-main branch]
* Enable culling of non-relevant objects from the poll+copy phases. Controlled via Net.Iris.CullNonRelevant
* Now accumulating dirty flags for dirty objects not cleaned after getting culled.
* DirtyObjectTracker now tracking objects set dirty in the current tick and objects not cleaned in previous frames.
* Now tracking list of CleanedObjects during the frame and only resetting dirty status of the cleaned objects.
#jira UE-184028, UE-181941
#rb Peter.Engstorm, Mattias.Hornlund
#rnx
[CL 25413294 by louisphilippe seguin in ue5-main branch]
* Added InitAndCopy functions on FNetBitArray. Used to quickly construct a bit array from an existing source (either bitarray or bitarrayview)
* Added Set functions. Used to overwrite the bitarray with the word operations of two other arrays.
#rb Peter.Engstorm
[CL 25380553 by louisphilippe seguin in ue5-main branch]
- Fixed bug where we did not immediately resend lost state for properties utilizing multiple changemask bits (arrays) until next time root property bit was modfied.
- Added testcase to catch this.
#rb Peter.Engstrom
#preflight 64512e821c2846595cb25a60
[CL 25314687 by mattias hornlund in ue5-main branch]
* Added GridFilter unit tests
* Encapsulated RepTag creation hack for unit tests
* Fix FragmentGridFilter reading world location fragment using wrong FVector unit type
#rb Peter.Engstorm
#rnx
[CL 25214436 by louisphilippe seguin in ue5-main branch]
* Add Filter Trait to NetObjectGroups
* NetObjectGroup global filtered list is now correct when a group acquires or loses it's filter trait
#jira UE-184027
#rb Peter.Engstorm, Mattias.Hornlund
#rnx
[CL 25199569 by louisphilippe seguin in ue5-main branch]
* Filter are now done in two passes
* The first pass executes regular engine filter options then any dynamic filters not using fragment data.
* Then any filtered object not relevant to atleast one connection will get culled out.
* Culled out objects will not get polled or copy their dirty data into the fragments.
* After the poll and copy is done, we now filter again only for filters that work with fragment data.
* This final filter list gets passed to be prioritized and given to the ReplicationWriter.
#jira UE-181941
#rb Peter.Engstorm, Mattias.Hornlund
#rnx
[CL 25175076 by louisphilippe seguin in ue5-main branch]
* Add cull distance to world locations storage
* Now only UNetObjectGridFragmentLocFilter reads the cull distance from the fragment data.
* UNetObjectGridWorldLocFilter wil instead read it from FWorldLocations
#rb Peter.Engstorm
#rnx
[CL 25096579 by louisphilippe seguin in ue5-main branch]