diff options
author | Juan Linietsky <reduzio@gmail.com> | 2018-06-25 16:50:33 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 16:50:33 -0300 |
commit | 87f48e7a3ee7bbfbc746e9df3fcff68917ae5f76 (patch) | |
tree | bfc1ff133073c9679f9ad52ee5ca105087d39e59 /scene/animation/animation_blend_space_1d.h | |
parent | 5b035107e3bae3f34f46935bc593569aad3fbca7 (diff) | |
parent | 0f7c35f95561c41648415c370005093827e5e445 (diff) |
Merge pull request #19720 from karroffel/blendspace-1d
add BlendSpace1D animation node
Diffstat (limited to 'scene/animation/animation_blend_space_1d.h')
-rw-r--r-- | scene/animation/animation_blend_space_1d.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/scene/animation/animation_blend_space_1d.h b/scene/animation/animation_blend_space_1d.h new file mode 100644 index 0000000000..447c948e93 --- /dev/null +++ b/scene/animation/animation_blend_space_1d.h @@ -0,0 +1,68 @@ +#ifndef ANIMATION_BLEND_SPACE_1D_H +#define ANIMATION_BLEND_SPACE_1D_H + +#include "scene/animation/animation_graph_player.h" + +class AnimationNodeBlendSpace1D : public AnimationRootNode { + GDCLASS(AnimationNodeBlendSpace1D, AnimationRootNode) + + enum { + MAX_BLEND_POINTS = 64 + }; + + struct BlendPoint { + Ref<AnimationRootNode> node; + float position; + }; + + BlendPoint blend_points[MAX_BLEND_POINTS]; + int blend_points_used; + + float blend_pos; + + float max_space; + float min_space; + + float snap; + + String value_label; + + void _add_blend_point(int p_index, const Ref<AnimationRootNode> &p_node); + +protected: + virtual void _validate_property(PropertyInfo &property) const; + static void _bind_methods(); + +public: + void add_blend_point(const Ref<AnimationRootNode> &p_node, float p_position, int p_at_index = -1); + void set_blend_point_position(int p_point, float p_position); + void set_blend_point_node(int p_point, const Ref<AnimationRootNode> &p_node); + + float get_blend_point_position(int p_point) const; + Ref<AnimationRootNode> get_blend_point_node(int p_point) const; + void remove_blend_point(int p_point); + int get_blend_point_count() const; + + void set_min_space(float p_min); + float get_min_space() const; + + void set_max_space(float p_max); + float get_max_space() const; + + void set_snap(float p_snap); + float get_snap() const; + + void set_blend_pos(float p_pos); + float get_blend_pos() const; + + void set_value_label(const String &p_label); + String get_value_label() const; + + float process(float p_time, bool p_seek); + String get_caption() const; + + AnimationNodeBlendSpace1D(); + ~AnimationNodeBlendSpace1D(); +}; + +#endif // ANIMATION_BLEND_SPACE_1D_H |