0
Not a Bug

On Timer Elapsed bug

NeedsLoomis 2 years ago updated by Lazlo Bonin (Lead Developer) 2 years ago 7

On Timer Elapsed doesn't seem to work when placed in the Start state of an FSM.

Bolt Version:
Unity Version:
Platform(s):
Scripting Backend:
.NET Version (API Compatibility Level):
GOOD, I'M SATISFIED
Satisfaction mark by NeedsLoomis 2 years ago
Cannot Reproduce

Odd, it works here.




Any more details about what you're doing?

Tested some more, it does work when setup like that, but on my end when I add a second state it stops.  Starts working again when I delete the second step.

Not a Bug

Events inside a state will stop listening when that state is exited. If you move on to the second state before the delay, on timer elapsed from the first state will no longer trigger, and that is by design. Is that what is happening?

Ahh, you are correct.  Thats interesting, I just assumed that the transitions execute after everything in the state completes.  I'm guessing they technically go on the next frame, hence why a timer doesn't function the way I thought?

There's no notion of a state being "complete". States can do anything, listen to any event forever, and never be "done". It's the transition's job to determine when to switch.

From your answer I'm not sure if you know that you can double-click a transition to edit it. By default, it transitions after the first update, but it can handle any event. I'm guessing you may be looking for a graph that looks like this:


And the graph inside that transition node:


You can read more about state transitions here: http://support.ludiq.io/topics/145-transitions/

+1

I understand how to modify transitions :P  

I'm just saying I assumed the state machine worked like: Do the stuff in the state, Check transition requirement. and that the "On Timer Elapsed" when within a state, would act something like a WaitUntil(() => time >= var), Do the stuff in the state, Check transition requirement, but its actually checking the transition requirement after every frame. It makes sense the way it works, I just wasn't thinking right :)

Alright! :) Didn't meant to be insulting, just wanted to make sure.