PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
animation_graph_types.h
1#pragma once
2
3#include "pixelbullet/serialization/node.h"
4
5#include <glm/vec2.hpp>
6
7#include <optional>
8#include <string>
9#include <vector>
10
11namespace pixelbullet
12{
13enum class AnimationGraphStateKind
14{
15 Clip,
16 Blend1DBySpeed,
17};
18
19enum class AnimationGraphStatePlaybackMode
20{
21 Loop,
22 OneShot,
23};
24
25enum class AnimationGraphPatrolMovementMode
26{
27 Route,
28 ChaseTarget,
29 InvestigateLastSeenPoint,
30};
31
32enum class AnimationGraphConditionType
33{
34 PatrolMovementModeEquals,
35 PerceptionDetectedEquals,
36 PatrolPausedEquals,
37 EffectiveSpeedGreaterOrEqual,
38 EffectiveSpeedLessThan,
39 CombatAttackActiveEquals,
40 CombatRecentlyDamagedEquals,
41 CombatDefeatedEquals,
42};
43
45{
46 float speed = 0.0f;
47 std::string clip_name;
48
49 [[nodiscard]] bool operator==(const AnimationGraphBlendSample&) const noexcept = default;
50};
51
53{
54 std::string notify_id;
55 float normalized_time = 0.0f;
56
57 [[nodiscard]] bool operator==(const AnimationGraphStateNotify&) const noexcept = default;
58};
59
61{
62 std::string id;
63 AnimationGraphStateKind kind = AnimationGraphStateKind::Clip;
64 AnimationGraphStatePlaybackMode playback_mode = AnimationGraphStatePlaybackMode::Loop;
65 std::string clip_name;
66 std::vector<AnimationGraphBlendSample> blend_samples;
67 std::vector<AnimationGraphStateNotify> notify_markers;
68 std::string completion_target_state_id;
69
70 [[nodiscard]] bool operator==(const AnimationGraphState&) const noexcept = default;
71};
72
74{
75 AnimationGraphConditionType type = AnimationGraphConditionType::PatrolMovementModeEquals;
76 AnimationGraphPatrolMovementMode patrol_movement_mode = AnimationGraphPatrolMovementMode::Route;
77 bool bool_value = false;
78 float speed_threshold = 0.0f;
79
80 [[nodiscard]] bool operator==(const AnimationGraphCondition&) const noexcept = default;
81};
82
84{
85 std::string from_state_id;
86 std::string target_state_id;
87 std::vector<AnimationGraphCondition> conditions;
88
89 [[nodiscard]] bool operator==(const AnimationGraphTransition&) const noexcept = default;
90};
91
93{
94 std::string state_id;
95 glm::vec2 position = glm::vec2(0.0f);
96
97 [[nodiscard]] bool operator==(const AnimationGraphEditorGraphNodeLayout&) const noexcept = default;
98};
99
101{
102 std::vector<AnimationGraphEditorGraphNodeLayout> nodes;
103
104 [[nodiscard]] bool Empty() const noexcept
105 {
106 return nodes.empty();
107 }
108
109 [[nodiscard]] bool operator==(const AnimationGraphEditorGraphLayout&) const noexcept = default;
110};
111
113{
114 std::string initial_state_id;
115 std::vector<AnimationGraphState> states;
116 std::vector<AnimationGraphTransition> transitions;
117 std::optional<AnimationGraphEditorGraphLayout> editor_graph;
118
119 [[nodiscard]] bool operator==(const AnimationGraphAsset&) const noexcept = default;
120};
121} // namespace pixelbullet
Definition animation_graph_types.h:113
Definition animation_graph_types.h:45
Definition animation_graph_types.h:74
Definition animation_graph_types.h:101
Definition animation_graph_types.h:93
Definition animation_graph_types.h:53
Definition animation_graph_types.h:61
Definition animation_graph_types.h:84