diff options
author | Juan Linietsky <reduzio@gmail.com> | 2019-07-04 22:54:32 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2020-02-11 11:53:28 +0100 |
commit | a7b2ac7bb1b5f9155866382f14138e86e52efded (patch) | |
tree | 605181a1f1fed96e484e89efaa05201d2db7fcc3 /scene/2d/animated_sprite.h | |
parent | 92b27bccf10a68f04a3553f1c925bdf09e076a89 (diff) | |
download | redot-engine-a7b2ac7bb1b5f9155866382f14138e86e52efded.tar.gz |
Normalmapping and Specularmapping working in 2D engine
Added support for Sprite, AnimatedSprite and Polygon2D (should add for tileset eventually).
Diffstat (limited to 'scene/2d/animated_sprite.h')
-rw-r--r-- | scene/2d/animated_sprite.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/scene/2d/animated_sprite.h b/scene/2d/animated_sprite.h index 2377f54079..37d093e3d8 100644 --- a/scene/2d/animated_sprite.h +++ b/scene/2d/animated_sprite.h @@ -50,8 +50,12 @@ class SpriteFrames : public Resource { } StringName normal_name; + StringName specular_name; }; + Color specular_color; + float shininess; + Map<StringName, Anim> animations; Array _get_frames() const; @@ -107,6 +111,20 @@ public: return EN->get().frames[p_idx]; } + _FORCE_INLINE_ Ref<Texture2D> get_specular_frame(const StringName &p_anim, int p_idx) const { + + const Map<StringName, Anim>::Element *E = animations.find(p_anim); + ERR_FAIL_COND_V(!E, Ref<Texture2D>()); + ERR_FAIL_COND_V(p_idx < 0, Ref<Texture2D>()); + + const Map<StringName, Anim>::Element *EN = animations.find(E->get().specular_name); + + if (!EN || p_idx >= EN->get().frames.size()) + return Ref<Texture2D>(); + + return EN->get().frames[p_idx]; + } + void set_frame(const StringName &p_anim, int p_idx, const Ref<Texture2D> &p_frame) { Map<StringName, Anim>::Element *E = animations.find(p_anim); ERR_FAIL_COND_MSG(!E, "Animation '" + String(p_anim) + "' doesn't exist."); @@ -150,6 +168,9 @@ class AnimatedSprite : public Node2D { bool _is_playing() const; Rect2 _get_rect() const; + Color specular_color; + float shininess; + protected: static void _bind_methods(); void _notification(int p_what); @@ -197,8 +218,11 @@ public: void set_flip_v(bool p_flip); bool is_flipped_v() const; - void set_modulate(const Color &p_color); - Color get_modulate() const; + void set_specular_color(const Color &p_color); + Color get_specular_color() const; + + void set_shininess(float p_shininess); + float get_shininess() const; virtual String get_configuration_warning() const; AnimatedSprite(); |