From 119 Seconds to 269 ms when measuring the time redo a large marquee selection (30 384 static mesh instances).
#jira UE-148888
#preflight 627146b75e6ce673f443ccea
[CL 20393379 by Julien StJean in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
Removed the mapping of objects to their save count, in favor of putting the save count into a new FObjectRecords struct, and mapping objects to that instead. This allows the records for an object to be found via the map, and avoids the remaining look-up overhead of searching the records array during object snapshotting.
The object records map keys against the FPersistentObjectRef rather than the raw-UObject, so that the record for sub-objects can be found correctly even if the sub-object is re-created.
#jira UE-110998
#rb Francis.Hurteau
#preflight 609e86c1f6c6e30001232b2b
#ROBOMERGE-SOURCE: CL 16330375 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)
[CL 16330390 by jamie dale in ue5-release-engine-test branch]
Removed the mapping of objects to their save count, in favor of putting the save count into a new FObjectRecords struct, and mapping objects to that instead. This allows the records for an object to be found via the map, and avoids the remaining look-up overhead of searching the records array during object snapshotting.
The object records map keys against the FPersistentObjectRef rather than the raw-UObject, so that the record for sub-objects can be found correctly even if the sub-object is re-created.
#jira UE-110998
#rb Francis.Hurteau
[CL 16052362 by Jamie Dale in ue5-main branch]
FPersistentObjectRef would perform a StaticFindObject for each sub-object in its object chain, for each request to resolve the object pointer. This could be quite costly when finding the record for a large transaction (eg, when moving thousands of objects).
This change stores a cache of the resolved object chain, and will use this cache if every object in the chain still passes its validation check. In order to do this, the guts of FPersistentObjectRef have been made private, and the -> operator was also removed as it could promote writing code that would repeatedly resolve the object pointer.
#rb Francis.Hurteau
#ROBOMERGE-SOURCE: CL 15813398 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v783-15756269)
[CL 15814442 by jamie dale in ue5-main branch]
#rb Ben.Hoffman
#jira
#rnx
#ROBOMERGE-SOURCE: CL 11824608 in //UE4/Release-4.25/... via CL 11824610
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11824618 by marc audy in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870586 by ryan durand in Main branch]
This also changes snapshots to only write and diff properties, regardless of whether we give it a specific list
#jira UE-79870
#fyi Danny.Couture
#rb Francis.Hurteau
[CL 9619743 by Jamie Dale in 4.24 branch]
Partition ActorComponent to the beginning of the map using sort like it used to be before the depth sort
#jira UE-80416
#rb Jamie.Dale
[FYI] Mihnea.Balta
#lockdown Cristina.Riveron
#ROBOMERGE-SOURCE: CL 9053171 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v443-9013191)
[CL 9055038 by francis hurteau in Main branch]