Logic Driver - Easily Design Gameplay Systems with State Machines

Hi Recursoft and others, Im using this plugin as a way for artists to easily create asset decision trees based off of a json struct built by ML. One of the issues im hitting here is that we never really want the system to idle on any state. We have a lot of sub-StateMachines for each feature, and we are moving through them each using HasStateMachine Reached EndState.

This works well, but sometimes our graph will not be able to find a valid transition and so it stays active on a node before the end of the sub State Machine. This is clearly ideal for tracking states, but we are using this more for a interactive decision tree.

i have tried to override
IsInEndState() on both the State Machine instance and the state instance in order to do a check if they have no available/valid transitions to report that it is in fact a End state, but i cant seem to get it to work. Some pointers on what to look at would be really useful! (Additional info, we are using the beta)


bool UWECLFeatureNode::IsInEndState() const
{
    if (Super::IsInEndState())
    {
        return true;
    }

    if (const FSMState_Base* Node = (FSMState_Base*)GetOwningNode())
    {
        for (FSMTransition* Transition : Node->GetOutgoingTransitions())
        {
            const bool bCanEval = Transition->bCanEvaluate;
            if (bCanEval && Transition->CanTransition())
            {
                return false;
            }

        }
    }
    return true;

Another solution we could do is check the states achieve time for being over a certain amount, but that seems pretty dirty.
Keen for any advice here!

Really impressed with the editor side of this plugin and its been very easy to navigate the code.