Commit Graph

67 Commits

Author SHA1 Message Date
peter engstrom
e8183a5f94 Iris - Fixed issue with subobjects fitered out and then allowed to be replicated again. Before they wouldn't replicate unless it or another subobject had dirty state.
#jira UE-184341
#rb mattias.hornlund
#preflight 6459ead6013f37515830271e

[CL 25384191 by peter engstrom in ue5-main branch]
2023-05-09 04:07:28 -04:00
louisphilippe seguin
652bd080ac NetBitArray
* 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]
2023-05-08 19:08:58 -04:00
louisphilippe seguin
9bcd7d97a7 Iris
* Added unit tests for RPC sending

#rb Mattias.Hornlund
#rnx

[CL 25355234 by louisphilippe seguin in ue5-main branch]
2023-05-05 11:23:31 -04:00
mattias hornlund
bca8fd0aac Iris
- 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]
2023-05-03 02:46:34 -04:00
ryan gerleve
d62f1e3ccc Validate that assertion macros in ReplicationSystemTest will be compatible with ReplicationSystemLowLevelTests.
Fix one in TestGroups.cpp that was incompatible.

#rb LouisPhilippe.Seguin, Peter.Engstrom

[CL 25219790 by ryan gerleve in ue5-main branch]
2023-04-27 14:04:51 -04:00
louisphilippe seguin
1d3c76e632 Iris
* 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]
2023-04-27 10:37:07 -04:00
louisphilippe seguin
a41e92c0d2 Iris
* 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]
2023-04-26 11:43:37 -04:00
louisphilippe seguin
e2e8e1f275 Iris
* Added thread-safe checks to FDirtyNetObjectTracker

#jira UE-184037
#rb Peter.Engstorm, Mattias.Hornlund
#rnx
#jira UE-184037

[CL 25199520 by louisphilippe seguin in ue5-main branch]
2023-04-26 11:41:45 -04:00
louisphilippe seguin
732be4e0aa ReplicationSystemTest
* Break on failed line instead of inside the FMessageLog

#rb Ryan.Gerleve
#rnx

[CL 25191980 by louisphilippe seguin in ue5-main branch]
2023-04-25 19:19:03 -04:00
louisphilippe seguin
0a0f5cb4f6 Iris
* Added unit test for filtering that runs both pre and post filter types

#rb trivial
#rnx

[CL 25183867 by louisphilippe seguin in ue5-main branch]
2023-04-25 13:26:45 -04:00
louisphilippe seguin
394d9dd910 Iris
* 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]
2023-04-24 23:02:37 -04:00
louisphilippe seguin
d8d138bcbc Iris
* 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]
2023-04-18 18:07:31 -04:00
peter engstrom
aafb58227d Iris - Changemask for TArray. Allows TArrays to only replicate a subset of the entire array when few elements have changed. Feature can be disabled with cvar net.Iris.UseChangeMaskForTArray 0
#jira UE-181100
#preflight 643e87ee211b661dc4428fa7
#rb louisphilippe.seguin, mattias.hornlund

[CL 25089292 by peter engstrom in ue5-main branch]
2023-04-18 12:49:50 -04:00
louisphilippe seguin
235a76b084 NetBitArray:
* Added IsBitSet
* Added CombineMultiple to run bit operations on two const bitarrays in 1 loop
* Added ToString that prints how many set bits the array currently has. Slightly expensive do not abuse with active logs.
* Added FNetBitArrayPrinter utility functions

#rb Peter.Engstorm, Mattias.Hornlund

[CL 25087720 by louisphilippe seguin in ue5-main branch]
2023-04-18 11:48:07 -04:00
peter engstrom
b732696462 Iris - TestMessage improvements. Use %hs instead of character conversion when printing ascii strings. Added NetRefHandle support.
#rnx
#rb mattias.hornlund
#preflight 643d03eedb681113a4940ee7

[CL 25066213 by peter engstrom in ue5-main branch]
2023-04-17 07:30:21 -04:00
peter engstrom
c412a8ce47 Iris - Huge object going out and in to scope now correctly end up flushing state.
#preflight 6437b4104c0cdaea09945083
#rb mattias.hornlund

[CL 25022272 by peter engstrom in ue5-main branch]
2023-04-13 05:46:42 -04:00
louisphilippe seguin
285c45c6df Iris Filter UnitTest:
* Split Mock filter into a seperate class when it needs to read fragment data of an object

#rb Peter.Engstorm

[CL 25018286 by louisphilippe seguin in ue5-main branch]
2023-04-12 19:03:40 -04:00
peter engstrom
ee293a8abc Iris - Implemented FNetBitArrayConstRangeIterator. Can only be used in range-based for loops.
#jira UE-182125
#preflight 642ea5232546b26a38a4c422
#rb mattias.hornlund

[CL 24956618 by peter engstrom in ue5-main branch]
2023-04-06 16:58:18 -04:00
peter engstrom
4260085021 Iris - Offset poll frame when adding new objects to a specific interval to spread them out across frames, leading to more stable CPU times for polling.
Note that there's no rebalancing code so as objects get out of scope and new objects are created an inbalance may occur eventually.

#preflight 642d42fdda7f958370c7567b
#rnx
#rb mattias.hornlund

[CL 24926362 by peter engstrom in ue5-main branch]
2023-04-05 08:50:34 -04:00
peter engstrom
b4ab22fbc1 Remove log spam. Use more appropriate UE_NET_LOG in test.
#rnx
#preflight none
#rb mattias.hornlund

[CL 24780588 by peter engstrom in ue5-main branch]
2023-03-24 12:04:30 -04:00
Peter Engstrom
66c9f0245e Suppress log error when testing WritePackedVector.
#rnx
#jira none
#preflight none
#rb brian.bekich
#preflight 6419b6b8e64b9d14c540534f

[CL 24731526 by Peter Engstrom in ue5-main branch]
2023-03-21 10:02:25 -04:00
Brian Bekich
c962e8f6fc FNetworkGUID now supports uint64 values
#jira UE-93777
#preflight 6411f2f5352bd6a889f950a5
#rb peter.engstrom

[CL 24689288 by Brian Bekich in ue5-main branch]
2023-03-17 10:41:53 -04:00
peter engstrom
bd872e737d Iris - Struct derived from struct with custom NetSerializer is no longer required to implement a NetSerializer.
#preflight 64119fc25819afacaff62277
#jira UE-179181
#rb mattias.hornlund

[CL 24654044 by peter engstrom in ue5-main branch]
2023-03-15 10:16:55 -04:00
peter engstrom
2a592c1ab5 Use std::numeric_limits
#rnx
#preflight 641079530e1f02786b4a00bc
#rb ryan.gerleve

[CL 24636857 by peter engstrom in ue5-main branch]
2023-03-14 11:41:56 -04:00
ryan gerleve
e990a0b7af Re-enable LastResortPropertyNetSerializer tests on non-Windows platforms since they're passing now.
#jira UE-166991
#rb peter.engstrom

[CL 24577511 by ryan gerleve in ue5-main branch]
2023-03-09 12:02:30 -05:00