36 lines
903 B
C
36 lines
903 B
C
![]() |
//
|
||
|
// 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<AnimNode> m_states;
|
||
|
std::vector<Transition> m_transitions;
|
||
|
std::vector<std::vector<Transition*> > 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() override;
|
||
|
void CalcSyncTrack() override;
|
||
|
void UpdateTime(float time_last, float time_now) override;
|
||
|
void Evaluate(AnimGraphContext& context) override;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif //ANIMTESTBED_ANIMGRAPHSTATEMACHINE_H
|