Selectable ignition/retraction based on FAST ON/OFF

I would think this is possible, but coming up blank at the moment.
Basically, I need to have EFFECT_IGNITION drive a standard in->out animation, but wanted to bypass that if EFFECT_FAST_ON happens and use a different, faster animation instead.
It seems that EFFECT_IGNITION is called in addition to EFFECT_FAST_ON, so I though maybe I need some sort of Color or Transition select based on whether it’s a FastOn or not.
This would choose the regular animation if not FastOn, But I don’t see any function that could work (thinking the EffectPulseF stuff), nor do I see any way that EFFECT_IGNITION won’t trigger, and therefore can not be bypassed.

You could put your EFFECT_IGNITON effect over the inout layer I suppose…

Right , unfortunately, the longer regular ignition shows due to the Fast ignition having a shorter duration.
I also tried without InOutTrL, which of course never covers things with black when off.
Tried to get away with a fake black color when off using IfOn…

Bottom line is I guess there’s no way to ignore EFFECT_IGNITION under some condition, and replace it with EFFECT_FAST_ON instead.

There should be a way to cover it up, but it might not be easy.
InOutTrL also doesn’t use EFFECT_IGNITION, it directly senses the on/off transition.
It may also be possible to build some pulse-based logic that makes this work, but that would be a bit annoying.

Maybe it’s possible to use TrSelect<Trigger<EFFECT_FAST_ON, ... >, > to do it?

Good idea.
This looks like it should work, but never seems to choose transition 2 (the fast on).

InOutTrL<TrSelect<Trigger<EFFECT_FAST_ON,Int<1>,WavLen<>,Int<1>>,
TrWipeX<WavLen<>>,
TrBoingX<WavLen<>,3>>,
/* Out->in */
TrWipeIn<500>,Black>

Try this:

InOutTrL<TrSelect<Divide<Trigger<EFFECT_FAST_ON,Int<0>,WavLen<>,Int<0>>, Int<32768>>
  TrWipeX<WavLen<>>,
  TrBoingX<WavLen<>,3>>,
  /* Out->in */
  TrWipeIn<500>,Black>

giphy (1)
Thank you, that works!

So to understand this…
// Usage: Divide<F, V>
// Divide F by V
// If V = 0, returns 0

So if Trigger is not run, it returns zero, which makes Divide return 0/32768 = 0, so we get the first transition. I see that.

But TrSelect chooses transitions based on 0-32768, like Mix does, no?
So 2 choices would be 0=first, 32768 = 2nd
3 choices would be 0, 16384, and 32768, and so on?

So if Trigger runs, it returns 32768 immediately, which makes Divide return … 1.

Is zero and 1 sufficient enough for 2 choices then? Is it choosing like an array element here?

No, TrSelect<> is 0 = first transition, 1 = second, 2 = third
It also wraps around, so 32768 % 2 = 0 = first transition

Got it. cool.

Oh, it didn’t work with WavLen<> by the way.
I’ll play some more now that I have something that works right.

100 millis should be enough.

Should work with Scale too instead of Divide then

Scale<
    Trigger<EFFECT_FAST_ON,Int<0>,Int<3000>,Int<0>>,
  Int<0>, 
  Int<1>>

Indeed it should.