Hi, thanks for your reply.
I override all necessary functions (c++), it looks like this:
USTRUCT(meta = (DisplayName = "Random Wait Task"))
struct PROJ_API FTestWaitTask : public FMassStateTreeTaskBase
{
GENERATED_BODY()
using FInstanceDataType = FMassTestWaitTaskInstanceData;
protected:
virtual bool Link(FStateTreeLinker& Linker) override;
virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); }
virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override;
virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override;
virtual EStateTreeRunStatus Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const override;
};
As I said, the ExitState gets called when I stop playing. The problem is that the Tick function is just called once after start.
In the enter state I return EStateTreeRunStatus::Running and in the Tick function I decrease the timer and return EStateTreeRunStatus::Succeeded when timer reaches <=0, otherwise I return EStateTreeRunStatus::Running.
I just don’t know why it isn’t ticking anymore after start.