diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-06-18 00:03:28 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2017-06-18 00:03:28 -0300 |
commit | 33bf180067eb0beb1a514adcdfb6a59cc5f4ac55 (patch) | |
tree | 3296df4806a238a93521beec240de6829f6a6e73 /scene/resources | |
parent | 5c6cac4e53058c987ca3c065ae49670e9cd9edbc (diff) |
Added normalmap support to stylebox and animated sprite.
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/style_box.cpp | 23 | ||||
-rw-r--r-- | scene/resources/style_box.h | 4 |
2 files changed, 26 insertions, 1 deletions
diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index 8874cbc102..2714ffec10 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -114,6 +114,19 @@ RES StyleBoxTexture::get_texture() const { return texture; } +void StyleBoxTexture::set_normal_map(RES p_normal_map) { + + if (normal_map == p_normal_map) + return; + normal_map = p_normal_map; + emit_changed(); +} + +RES StyleBoxTexture::get_normal_map() const { + + return normal_map; +} + void StyleBoxTexture::set_margin_size(Margin p_margin, float p_size) { margin[p_margin] = p_size; @@ -143,7 +156,11 @@ void StyleBoxTexture::draw(RID p_canvas_item, const Rect2 &p_rect) const { rect.size.x += expand_margin[MARGIN_LEFT] + expand_margin[MARGIN_RIGHT]; rect.size.y += expand_margin[MARGIN_TOP] + expand_margin[MARGIN_BOTTOM]; - VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NINE_PATCH_STRETCH, VS::NINE_PATCH_STRETCH, draw_center, modulate); + RID normal_rid; + if (normal_map.is_valid()) + normal_rid = normal_map->get_rid(); + + VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NINE_PATCH_STRETCH, VS::NINE_PATCH_STRETCH, draw_center, modulate, normal_rid); } void StyleBoxTexture::set_draw_center(bool p_draw) { @@ -209,6 +226,9 @@ void StyleBoxTexture::_bind_methods() { ClassDB::bind_method(D_METHOD("set_texture", "texture:Texture"), &StyleBoxTexture::set_texture); ClassDB::bind_method(D_METHOD("get_texture:Texture"), &StyleBoxTexture::get_texture); + ClassDB::bind_method(D_METHOD("set_normal_map", "normal_map:Texture"), &StyleBoxTexture::set_normal_map); + ClassDB::bind_method(D_METHOD("get_normal_map:Texture"), &StyleBoxTexture::get_normal_map); + ClassDB::bind_method(D_METHOD("set_margin_size", "margin", "size"), &StyleBoxTexture::set_margin_size); ClassDB::bind_method(D_METHOD("get_margin_size", "margin"), &StyleBoxTexture::get_margin_size); @@ -227,6 +247,7 @@ void StyleBoxTexture::_bind_methods() { ADD_SIGNAL(MethodInfo("texture_changed")); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "normal_map", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_normal_map", "get_normal_map"); ADD_PROPERTYNZ(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect"); ADD_GROUP("Margin", "margin_"); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_margin_size", "get_margin_size", MARGIN_LEFT); diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h index 97edc68bff..7547c2ea81 100644 --- a/scene/resources/style_box.h +++ b/scene/resources/style_box.h @@ -81,6 +81,7 @@ class StyleBoxTexture : public StyleBox { float margin[4]; Rect2 region_rect; Ref<Texture> texture; + Ref<Texture> normal_map; bool draw_center; Color modulate; @@ -101,6 +102,9 @@ public: void set_texture(RES p_texture); RES get_texture() const; + void set_normal_map(RES p_normal_map); + RES get_normal_map() const; + void set_draw_center(bool p_draw); bool get_draw_center() const; virtual Size2 get_center_size() const; |