[FYI] vincent.robert
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL30211300
[FYI] vincent.robert
Original CL Desc
-----------------------------------------------------------------
Reduce array size to store only required particles.
Several array in the Geometry Collection are used to store particle. According to the max simulation level, not all particle are created.
Now array have their own size, the particle size and the transform size in the proxy is now distinguished.
This change save 55% of memory in initialization.
It also avoid to process all transforms, we now iterate only through particles which should be way faster.
#rb cedric.caillaud
[CL 30221091 by vincent robert in ue5-main branch]
[FYI] vincent.robert
Original CL Desc
-----------------------------------------------------------------
Reduce array size to store only required particles.
Several array in the Geometry Collection are used to store particle. According to the max simulation level, not all particle are created.
Now array have their own size, the particle size and the transform size in the proxy is now distinguished.
This change save 55% of memory in initialization.
It also avoid to process all transforms, we now iterate only through particles which should be way faster.
#rb cedric.caillaud
[CL 30213295 by vincent robert in ue5-main branch]
Several array in the Geometry Collection are used to store particle. According to the max simulation level, not all particle are created.
Now array have their own size, the particle size and the transform size in the proxy is now distinguished.
This change save 55% of memory in initialization.
It also avoid to process all transforms, we now iterate only through particles which should be way faster.
#rb cedric.caillaud
[CL 30211315 by vincent robert in ue5-main branch]
Check that the cached lambda function is callable before calling it.
Null check logic in the source function enqueing the lambda.
Use locally cached async physics command struct instead of accessing array each time.
#rb Michael.Forot
[CL 29711242 by markus boberg in ue5-main branch]
- This is caused by the transform not being properly defined when receiving a ComponentAdded event
- Override ChildToParentUpdated method to update the rendering transform
#rb michael.bao, chris.caulfield, michael.lentine
[CL 29615742 by cedric caillaud in ue5-main branch]
Use the RestCollection to access those attributes instead.
#rb cedric.caillaud, vincent.robert, Benn.Gallagher
[CL 29246315 by titouan deslandes in ue5-main branch]
When the building is moving , check at regular interval if any partially destroyed geometry collection has been broken for certain amount of time since the building is moving
If so, then release it
- Cache the dynamic state in the cluster union component to avoid calling IsSimulatingPhysics()
- Added a virtual function called whenever the physics state of the cluster union is set
#rb benn.gallagher, michael.lentinne, michael.bao, chris.caulfield
[CL 29121109 by cedric caillaud in ue5-main branch]
- Removed the need of maintain two sets to cache FExternalSpatialAccelerationPayload structures as components are added/removed
- Added a new constructor to FExternalSpatialAccelerationPayload so we can directly pass a TObjectKey and the chaos UniqueIdx, so we don't have to build them from scratch (which requires lock the scene to get the Particle idx and access the Global objects array to build the WeakObjtPtr).
- Wrapped TObjectKey in a wrapper we can use to store other elements we will use later, so we don't have to go back and forth between converting between ObjectKey and Raw ptr which requires access to the global objects array and is not cheap.
- Removed TSet the need to do TSet differences
- Added a new native event that when broadcasted in addition to the new bone ids that were added, it also passes an array of bone IDs removed. (So listeners don't have to calculate it on their own again).
- Splitted UGeometryCollectionComponent::SetPerParticleCollisionProfileName so its components can be called independently. There are cases where we need to call it with different profile name witching the same scope, so part of the method doesn't need to be executed again. To ensure all parts are executed as desired, a new transaction object was created that need to be passed to the new UGeometryCollectionComponent::SetParticleCollisionProfileName
#rb cedric.caillaud, michael.bao
[CL 29119882 by sergio gardeazabal in ue5-main branch]
- Existing implementation has too many vectors for race conditions; will need a more targeted approach to optimize scene commands.
- Cable component manually initializes resources on the Cable pipe instead of using CreateRenderThreadResources.
- Removed async path for scene proxy render resource creation.
[CL 29090823 by zach bethel in ue5-main branch]