Playmaker Forum

PlayMaker Help & Tips => PlayMaker Help => Topic started by: telpokint on October 11, 2013, 03:14:38 PM

Title: Transition after multiple actions have completed execution.
Post by: telpokint on October 11, 2013, 03:14:38 PM
I have states with multiple (let's say 10) actions (most of them are move to position actions).  I want to transition to the next state when all the actions have finished, i.e. when all the objects have reached their destination.  I can think of two cumbersome ways to do this:

1) Make 10 identical states, and have each action send the same NEXT event on end.  Then have the 11th state be the actual state I want to transition to when all are completed.

2) Find out which action will take the longest, and only transition when it is done.

1) seems ridiculously cumbersome, and especially because I have many states where I do this kind of thing, so my FSM will be filled with identical states.

2) Seems impossible and also cumbersome, because in a dynamic environment it would be hard to know which action would end earliest.

Is there an easy way to do this in Playmaker, or will I just have to write my own script?
Title: Re: Transition after multiple actions have completed execution.
Post by: telpokint on October 11, 2013, 04:16:29 PM
Actually I just tried to implement 1) and realized that it's not feasible, because the first object that reaches it's destination will just send the end event N times, so it'll transition to the next part as soon as the first one arrives, not when all of them arrive.

Is there any way to only transition when all actions have finished?
Title: Re: Transition after multiple actions have completed execution.
Post by: mikejkelley on October 11, 2013, 06:00:34 PM
ArrayListGetMaxFloat, store the game obj. w/ this dist. value as a var, compare the var, send event when var=0? I'm new to playmaker, so this may not be what you want/or work.
Title: Re: Transition after multiple actions have completed execution.
Post by: telpokint on October 12, 2013, 07:18:48 PM
So I basically have to write my own script to do all of the logic?  There's no way to do it natively in playmaker?
Title: Re: Transition after multiple actions have completed execution.
Post by: Alex Chouls on October 13, 2013, 07:47:44 AM
The state sends a FINISHED event when all actions on the state have finished. You can use this to transition to another state.

You could also have a separate FSM watch for transition conditions, and send events to the first FSM. Basically a Controller FSM that sends events to an FSM that knows what to do with them. This separation is often a good idea. It lets you swap controllers out, e.g., player controller, AI controller, cut-scene controller... It can also make it easier to test different behaviors. If all the logic/behavior/animation etc. is all in one FSM it can quickly become hard to iterate/change/test...