Optimisation made to Dynamic Parameter Particle Module has broken it.

I haven’t done any Particle FX for a while, so I have no idea how long this has been broken. I built a material using a dynamic parameter, trying to animate some properties and leave others static. In my scenario:



Param0 - Animated with Constant Curve, 'SpawnTimeOnly' was **unchecked.**
Param1 - Static with Constant, 'SpawnTimeOnly' was **Checked.**
Param2 - Animated with Constant Curve, 'SpawnTimeOnly' was **unchecked.**
Param3 - Static with Constant, 'SpawnTimeOnly' was **Checked.**


Previously this would be fine, but it doesn’t work anymore (I’m using 4.15 - but this could have been broken for a while). Param0 would not animate properly unless Param2 had SpawnTimeOnly CHECKED, which makes no sense as it’s a constant curve (and therefore wouldn’t animate).

Changing my material so I had the following arrangement made it all work:



Param0 - Animated with Constant Curve, 'SpawnTimeOnly' was **unchecked.**
Param1 - Animated with Constant Curve, 'SpawnTimeOnly' was **unchecked.**
Param2 - Static with Constant, 'SpawnTimeOnly' was **Checked.**
Param3 - Static with Constant, 'SpawnTimeOnly' was **Checked.**


I dug into engine code a bit because this is obviously broken, and discovered that an optimization has been added whereby Dynamic Paramters don’t send updates to the material unless this property is unchecked. The code is done with flags, but unfortunately it is done in such a way that it only works properly if the first set of params have it unchecked, and subsequent ones have it checked. You can’t mix and match them anymore. This is a problem, because you now need to know in what order you need your params to be in - or you may have to create duplicates of materials just to have the params in the right order.

Even if this is intentional, it’s behaviour is totally undocumented and I don’t feel like the UI should let me do it if it’s not going to work properly.