Rename the current primitive component "simple collision". The simple collision represents a basic shape, like a box or a capsule. Its OnBegin and OnEnd overlap events broadcast to the UThermodynamicComponent.
Add a second optional "complex collision" primitive component. The complex collision has a shape that resembles the owner actor. It does not broadcast to its UThermodynamicComponent in any way.
Change the thermodynamics logic so that two thermodynamics components can exchange heat if and only if:
Their simple collisions overlap
Their most complex collisions also overlap. The most complex collisions are checked only when the simple collisions overlap.
Why?
We want to achieve accuracy while saving performance.
Using complex collisions instead of trivial capsules/boxes for thermodynamics interactions is necessary to have accurate gameplay, but if we just bind to complex collisions for OnBegin and OnEnd overlap events we'll hurt performances badly.
By implementing this system, complex collisions are present but checked only when the interacting actors are close to each other, saving computations when they're not needed.
What?
In
UThermodynamicComponent
:UThermodynamicComponent
.UThermodynamicComponent
in any way.Change the thermodynamics logic so that two thermodynamics components can exchange heat if and only if:
Why?
We want to achieve accuracy while saving performance.
Using complex collisions instead of trivial capsules/boxes for thermodynamics interactions is necessary to have accurate gameplay, but if we just bind to complex collisions for OnBegin and OnEnd overlap events we'll hurt performances badly.
By implementing this system, complex collisions are present but checked only when the interacting actors are close to each other, saving computations when they're not needed.