diff options
| author | Juan Linietsky | 2016-07-10 12:41:57 -0300 |
|---|---|---|
| committer | GitHub | 2016-07-10 12:41:57 -0300 |
| commit | 0e6e0ed0e5b8f41b20c087f3acb3a5ebb0836e60 (patch) | |
| tree | 4fd957bded02d11f610f11dfac7f82dd66b2bc00 /servers/visual/visual_server_raster.cpp | |
| parent | 28641fd9b8e73b3fae57ea4ccf0356629507ea3a (diff) | |
| parent | 91add16300de38adf1e95728055c3e28f36ec182 (diff) | |
| download | godot-0e6e0ed0e5b8f41b20c087f3acb3a5ebb0836e60.tar.gz godot-0e6e0ed0e5b8f41b20c087f3acb3a5ebb0836e60.tar.zst godot-0e6e0ed0e5b8f41b20c087f3acb3a5ebb0836e60.zip | |
Diffstat (limited to 'servers/visual/visual_server_raster.cpp')
| -rw-r--r-- | servers/visual/visual_server_raster.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 526179c41..d89ea887f 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -4448,12 +4448,13 @@ void VisualServerRaster::cursor_set_rotation(float p_rotation, int p_cursor) { cursors[p_cursor].rot = p_rotation; }; -void VisualServerRaster::cursor_set_texture(RID p_texture, const Point2 &p_center_offset, int p_cursor) { +void VisualServerRaster::cursor_set_texture(RID p_texture, const Point2 &p_center_offset, int p_cursor, const Rect2 &p_region) { VS_CHANGED; ERR_FAIL_INDEX(p_cursor, MAX_CURSORS); cursors[p_cursor].texture = p_texture; cursors[p_cursor].center = p_center_offset; + cursors[p_cursor].region = p_region; }; void VisualServerRaster::cursor_set_visible(bool p_visible, int p_cursor) { @@ -7530,8 +7531,13 @@ void VisualServerRaster::_draw_cursors_and_margins() { RID tex = cursors[i].texture?cursors[i].texture:default_cursor_texture; ERR_CONTINUE( !tex ); - Point2 size(texture_get_width(tex), texture_get_height(tex)); - rasterizer->canvas_draw_rect(Rect2(cursors[i].pos, size), 0, Rect2(), tex, Color(1, 1, 1, 1)); + if (cursors[i].region.has_no_area()) { + Point2 size(texture_get_width(tex), texture_get_height(tex)); + rasterizer->canvas_draw_rect(Rect2(cursors[i].pos, size), 0, Rect2(), tex, Color(1, 1, 1, 1)); + } else { + Point2 size = cursors[i].region.size; + rasterizer->canvas_draw_rect(Rect2(cursors[i].pos, size), Rasterizer::CANVAS_RECT_REGION, cursors[i].region, tex, Color(1, 1, 1, 1)); + } }; |
