Fixed AtlasTexture being incorrectly

Fixed StyleBoxTexture and NinePatchRect drawing the entire texture of an
AtlasTexture.
This commit is contained in:
Robert Hernandez
2017-03-30 21:09:25 -04:00
parent d7dd276ccc
commit a4a12a2b7b
3 changed files with 27 additions and 39 deletions
+6 -20
View File
@@ -37,27 +37,13 @@ void NinePatchRect::_notification(int p_what) {
if (texture.is_null())
return;
Size2 s = get_size();
Rect2 rect = Rect2(Point2(), get_size());
Rect2 src_rect = region_rect;
texture->get_rect_region(rect, src_rect, rect, src_rect);
RID ci = get_canvas_item();
VS::get_singleton()->canvas_item_add_nine_patch(ci, Rect2(Point2(), s), region_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);
//draw_texture_rect(texture,Rect2(Point2(),s),false,modulate);
/*
Vector<Point2> points;
points.resize(4);
points[0]=Point2(0,0);
points[1]=Point2(s.x,0);
points[2]=Point2(s.x,s.y);
points[3]=Point2(0,s.y);
Vector<Point2> uvs;
uvs.resize(4);
uvs[0]=Point2(0,0);
uvs[1]=Point2(1,0);
uvs[2]=Point2(1,1);
uvs[3]=Point2(0,1);
VisualServer::get_singleton()->canvas_item_add_primitive(ci,points,Vector<Color>(),uvs,texture->get_rid());
*/
VS::get_singleton()->canvas_item_add_nine_patch(ci, 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);
}
}
+8 -6
View File
@@ -103,9 +103,11 @@ void StyleBoxTexture::set_texture(RES p_texture) {
if (texture == p_texture)
return;
texture = p_texture;
region_rect = Rect2(Point2(), texture->get_size());
emit_signal("texture_changed");
emit_changed();
}
RES StyleBoxTexture::get_texture() const {
return texture;
@@ -130,12 +132,12 @@ void StyleBoxTexture::draw(RID p_canvas_item, const Rect2 &p_rect) const {
if (texture.is_null())
return;
Rect2 r = p_rect;
r.pos.x -= expand_margin[MARGIN_LEFT];
r.pos.y -= expand_margin[MARGIN_TOP];
r.size.x += expand_margin[MARGIN_LEFT] + expand_margin[MARGIN_RIGHT];
r.size.y += expand_margin[MARGIN_TOP] + expand_margin[MARGIN_BOTTOM];
VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, r, region_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);
Rect2 rect = p_rect;
Rect2 src_rect = region_rect;
texture->get_rect_region(rect, src_rect, rect, src_rect);
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);
}
void StyleBoxTexture::set_draw_center(bool p_draw) {