|
@@ -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);
|