Beispiel #1
0
void LargeTexture::draw_rect_region(RID p_canvas_item,const Rect2& p_rect, const Rect2& p_src_rect,const Color& p_modulate, bool p_transpose) const {


	//tiling not supported for this
	if (p_src_rect.size.x==0 || p_src_rect.size.y==0)
		return;

	Size2 scale = p_rect.size/p_src_rect.size;

	for(int i=0;i<pieces.size();i++) {

		// TODO
		Rect2 rect( pieces[i].offset, pieces[i].texture->get_size());
		if (!p_src_rect.intersects(rect))
			continue;
		Rect2 local = p_src_rect.clip(rect);
		Rect2 target = local;
		target.size*=scale;
		target.pos=p_rect.pos+(p_src_rect.pos+rect.pos)*scale;
		local.pos-=rect.pos;
		pieces[i].texture->draw_rect_region(p_canvas_item,target,local,p_modulate,p_transpose);
	}

}