// // Created by martin on 17.03.24. // #ifndef ANIMTESTBED_ANIMGRAPHSTATEMACHINE_H #define ANIMTESTBED_ANIMGRAPHSTATEMACHINE_H #include "AnimGraphNodes.h" struct Transition { AnimNode* m_source_state = nullptr; AnimNode* m_target_state = nullptr; float m_blend_time = 0.f; bool m_sync_blend = false; }; struct AnimGraphStateMachine : public AnimNode { std::vector m_states; std::vector m_transitions; std::vector > m_state_out_transitions; AnimNode* m_next_state = nullptr; AnimNode* m_current_state = nullptr; Transition* m_active_transition = nullptr; bool Init(AnimGraphContext& context); void MarkActiveInputs(const std::vector& input_connections) override; void CalcSyncTrack(const std::vector& input_connections) override; void UpdateTime(float time_last, float time_now) override; void Evaluate(AnimGraphContext& context) override; }; #endif //ANIMTESTBED_ANIMGRAPHSTATEMACHINE_H