Merge pull request #58394 from bruvzg/rtl_hint
This commit is contained in:
commit
19950076b1
6 changed files with 181 additions and 10 deletions
|
|
@ -444,6 +444,25 @@ void CanvasItem::item_rect_changed(bool p_size_changed) {
|
|||
emit_signal(SceneStringNames::get_singleton()->item_rect_changed);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_dashed_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, real_t p_width, real_t p_dash) {
|
||||
ERR_FAIL_COND_MSG(!drawing, "Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal.");
|
||||
|
||||
float length = (p_to - p_from).length();
|
||||
if (length < p_dash) {
|
||||
RenderingServer::get_singleton()->canvas_item_add_line(canvas_item, p_from, p_to, p_color, p_width);
|
||||
return;
|
||||
}
|
||||
|
||||
Point2 off = p_from;
|
||||
Vector2 step = p_dash * (p_to - p_from).normalized();
|
||||
int steps = length / p_dash / 2;
|
||||
for (int i = 0; i < steps; i++) {
|
||||
RenderingServer::get_singleton()->canvas_item_add_line(canvas_item, off, (off + step), p_color, p_width);
|
||||
off += 2 * step;
|
||||
}
|
||||
RenderingServer::get_singleton()->canvas_item_add_line(canvas_item, off, p_to, p_color, p_width);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, real_t p_width) {
|
||||
ERR_FAIL_COND_MSG(!drawing, "Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal.");
|
||||
|
||||
|
|
@ -868,6 +887,7 @@ void CanvasItem::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("_is_on_top"), &CanvasItem::_is_on_top);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("draw_line", "from", "to", "color", "width"), &CanvasItem::draw_line, DEFVAL(1.0));
|
||||
ClassDB::bind_method(D_METHOD("draw_dashed_line", "from", "to", "color", "width", "dash"), &CanvasItem::draw_dashed_line, DEFVAL(1.0), DEFVAL(2.0));
|
||||
ClassDB::bind_method(D_METHOD("draw_polyline", "points", "color", "width", "antialiased"), &CanvasItem::draw_polyline, DEFVAL(1.0), DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("draw_polyline_colors", "points", "colors", "width", "antialiased"), &CanvasItem::draw_polyline_colors, DEFVAL(1.0), DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("draw_arc", "center", "radius", "start_angle", "end_angle", "point_count", "color", "width", "antialiased"), &CanvasItem::draw_arc, DEFVAL(1.0), DEFVAL(false));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue