I'm frequently running into a situation where many cleanup components need to duplicate "well-known" data on an entity to be able to perform cleanup logic, such as the world position from LocalToWorld.
Right now the only "pattern" I've come up with is just to keep copying all the relevant data into all the cleanup components that are interested in it (sometimes every frame, such as in the case of updating positions) but this feels like a really ugly and slow way of doing things.
I find myself wishing for a type of component in between IComponentData and ICleanupComponentData:
type | blocks destruction | removed by DestroyEntity
IComponentData | no | yes
I???ComponentData | no | no
ICleanupComponentData | yes | no
Is there a good pattern for this? Note: I'm running into this with other more game-specific data besides position as well.