You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-31 18:41:20 +00:00
Merge pull request #113282 from dsnopek/required-ptr-get-out-there
Use `RequiredParam`/`RequiredResult` in some high value places
This commit is contained in:
@@ -884,49 +884,49 @@ void CanvasItem::draw_circle(const Point2 &p_pos, real_t p_radius, const Color &
|
||||
draw_ellipse(p_pos, p_radius, p_radius, p_color, p_filled, p_width, p_antialiased);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_texture(const Ref<Texture2D> &p_texture, const Point2 &p_pos, const Color &p_modulate) {
|
||||
void CanvasItem::draw_texture(RequiredParam<Texture2D> rp_texture, const Point2 &p_pos, const Color &p_modulate) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_texture, rp_texture);
|
||||
|
||||
p_texture->draw(canvas_item, p_pos, p_modulate, false);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_texture_rect(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, bool p_tile, const Color &p_modulate, bool p_transpose) {
|
||||
void CanvasItem::draw_texture_rect(RequiredParam<Texture2D> rp_texture, const Rect2 &p_rect, bool p_tile, const Color &p_modulate, bool p_transpose) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_texture, rp_texture);
|
||||
p_texture->draw_rect(canvas_item, p_rect, p_tile, p_modulate, p_transpose);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate, bool p_transpose, bool p_clip_uv) {
|
||||
void CanvasItem::draw_texture_rect_region(RequiredParam<Texture2D> rp_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate, bool p_transpose, bool p_clip_uv) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_texture, rp_texture);
|
||||
p_texture->draw_rect_region(canvas_item, p_rect, p_src_rect, p_modulate, p_transpose, p_clip_uv);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_msdf_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate, double p_outline, double p_pixel_range, double p_scale) {
|
||||
void CanvasItem::draw_msdf_texture_rect_region(RequiredParam<Texture2D> rp_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate, double p_outline, double p_pixel_range, double p_scale) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_texture, rp_texture);
|
||||
RenderingServer::get_singleton()->canvas_item_add_msdf_texture_rect_region(canvas_item, p_rect, p_texture->get_rid(), p_src_rect, p_modulate, p_outline, p_pixel_range, p_scale);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_lcd_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate) {
|
||||
void CanvasItem::draw_lcd_texture_rect_region(RequiredParam<Texture2D> rp_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_texture, rp_texture);
|
||||
RenderingServer::get_singleton()->canvas_item_add_lcd_texture_rect_region(canvas_item, p_rect, p_texture->get_rid(), p_src_rect, p_modulate);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_style_box(const Ref<StyleBox> &p_style_box, const Rect2 &p_rect) {
|
||||
void CanvasItem::draw_style_box(RequiredParam<StyleBox> rp_style_box, const Rect2 &p_rect) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
|
||||
ERR_FAIL_COND(p_style_box.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_style_box, rp_style_box);
|
||||
|
||||
p_style_box->draw(canvas_item, p_rect);
|
||||
}
|
||||
@@ -995,67 +995,67 @@ void CanvasItem::draw_colored_polygon(const Vector<Point2> &p_points, const Colo
|
||||
draw_polygon(p_points, { p_color }, p_uvs, p_texture);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_mesh(const Ref<Mesh> &p_mesh, const Ref<Texture2D> &p_texture, const Transform2D &p_transform, const Color &p_modulate) {
|
||||
void CanvasItem::draw_mesh(RequiredParam<Mesh> rp_mesh, const Ref<Texture2D> &p_texture, const Transform2D &p_transform, const Color &p_modulate) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_FAIL_COND(p_mesh.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_mesh, rp_mesh);
|
||||
RID texture_rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
|
||||
|
||||
RenderingServer::get_singleton()->canvas_item_add_mesh(canvas_item, p_mesh->get_rid(), p_transform, p_modulate, texture_rid);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_multimesh(const Ref<MultiMesh> &p_multimesh, const Ref<Texture2D> &p_texture) {
|
||||
void CanvasItem::draw_multimesh(RequiredParam<MultiMesh> rp_multimesh, const Ref<Texture2D> &p_texture) {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_FAIL_COND(p_multimesh.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_multimesh, rp_multimesh);
|
||||
RID texture_rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
|
||||
RenderingServer::get_singleton()->canvas_item_add_multimesh(canvas_item, p_multimesh->get_rid(), texture_rid);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, const Color &p_modulate, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
void CanvasItem::draw_string(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, const Color &p_modulate, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_string(canvas_item, p_pos, p_text, p_alignment, p_width, p_font_size, p_modulate, p_jst_flags, p_direction, p_orientation, p_oversampling);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_multiline_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_max_lines, const Color &p_modulate, BitField<TextServer::LineBreakFlag> p_brk_flags, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
void CanvasItem::draw_multiline_string(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_max_lines, const Color &p_modulate, BitField<TextServer::LineBreakFlag> p_brk_flags, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_multiline_string(canvas_item, p_pos, p_text, p_alignment, p_width, p_font_size, p_max_lines, p_modulate, p_brk_flags, p_jst_flags, p_direction, p_orientation, p_oversampling);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_string_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_size, const Color &p_modulate, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
void CanvasItem::draw_string_outline(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_size, const Color &p_modulate, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_string_outline(canvas_item, p_pos, p_text, p_alignment, p_width, p_font_size, p_size, p_modulate, p_jst_flags, p_direction, p_orientation, p_oversampling);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_multiline_string_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_max_lines, int p_size, const Color &p_modulate, BitField<TextServer::LineBreakFlag> p_brk_flags, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
void CanvasItem::draw_multiline_string_outline(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment, float p_width, int p_font_size, int p_max_lines, int p_size, const Color &p_modulate, BitField<TextServer::LineBreakFlag> p_brk_flags, BitField<TextServer::JustificationFlag> p_jst_flags, TextServer::Direction p_direction, TextServer::Orientation p_orientation, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_multiline_string_outline(canvas_item, p_pos, p_text, p_alignment, p_width, p_font_size, p_max_lines, p_size, p_modulate, p_brk_flags, p_jst_flags, p_direction, p_orientation, p_oversampling);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_char(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_char, int p_font_size, const Color &p_modulate, float p_oversampling) const {
|
||||
void CanvasItem::draw_char(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_char, int p_font_size, const Color &p_modulate, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_char.length() != 1);
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_char(canvas_item, p_pos, p_char[0], p_font_size, p_modulate, p_oversampling);
|
||||
}
|
||||
|
||||
void CanvasItem::draw_char_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_char, int p_font_size, int p_size, const Color &p_modulate, float p_oversampling) const {
|
||||
void CanvasItem::draw_char_outline(RequiredParam<Font> rp_font, const Point2 &p_pos, const String &p_char, int p_font_size, int p_size, const Color &p_modulate, float p_oversampling) const {
|
||||
ERR_THREAD_GUARD;
|
||||
ERR_DRAW_GUARD;
|
||||
ERR_FAIL_COND(p_char.length() != 1);
|
||||
ERR_FAIL_COND(p_font.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_font, rp_font);
|
||||
|
||||
p_font->draw_char_outline(canvas_item, p_pos, p_char[0], p_font_size, p_size, p_modulate, p_oversampling);
|
||||
}
|
||||
@@ -1257,9 +1257,9 @@ Vector2 CanvasItem::make_canvas_position_local(const Vector2 &screen_point) cons
|
||||
return local_matrix.xform(screen_point);
|
||||
}
|
||||
|
||||
Ref<InputEvent> CanvasItem::make_input_local(const Ref<InputEvent> &p_event) const {
|
||||
RequiredResult<InputEvent> CanvasItem::make_input_local(RequiredParam<InputEvent> rp_event) const {
|
||||
ERR_READ_THREAD_GUARD_V(Ref<InputEvent>());
|
||||
ERR_FAIL_COND_V(p_event.is_null(), p_event);
|
||||
EXTRACT_PARAM_OR_FAIL_V(p_event, rp_event, Ref<InputEvent>());
|
||||
ERR_FAIL_COND_V(!is_inside_tree(), p_event);
|
||||
|
||||
return p_event->xformed_by((get_canvas_transform() * get_global_transform()).affine_inverse());
|
||||
|
||||
@@ -316,27 +316,27 @@ public:
|
||||
void draw_rect(const Rect2 &p_rect, const Color &p_color, bool p_filled = true, real_t p_width = -1.0, bool p_antialiased = false);
|
||||
void draw_ellipse(const Point2 &p_pos, real_t p_major, real_t p_minor, const Color &p_color, bool p_filled = true, real_t p_width = -1.0, bool p_antialiased = false);
|
||||
void draw_circle(const Point2 &p_pos, real_t p_radius, const Color &p_color, bool p_filled = true, real_t p_width = -1.0, bool p_antialiased = false);
|
||||
void draw_texture(const Ref<Texture2D> &p_texture, const Point2 &p_pos, const Color &p_modulate = Color(1, 1, 1, 1));
|
||||
void draw_texture_rect(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false);
|
||||
void draw_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, bool p_clip_uv = false);
|
||||
void draw_msdf_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), double p_outline = 0.0, double p_pixel_range = 4.0, double p_scale = 1.0);
|
||||
void draw_lcd_texture_rect_region(const Ref<Texture2D> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1));
|
||||
void draw_style_box(const Ref<StyleBox> &p_style_box, const Rect2 &p_rect);
|
||||
void draw_texture(RequiredParam<Texture2D> rp_texture, const Point2 &p_pos, const Color &p_modulate = Color(1, 1, 1, 1));
|
||||
void draw_texture_rect(RequiredParam<Texture2D> p_texture, const Rect2 &p_rect, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false);
|
||||
void draw_texture_rect_region(RequiredParam<Texture2D> p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, bool p_clip_uv = false);
|
||||
void draw_msdf_texture_rect_region(RequiredParam<Texture2D> p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), double p_outline = 0.0, double p_pixel_range = 4.0, double p_scale = 1.0);
|
||||
void draw_lcd_texture_rect_region(RequiredParam<Texture2D> p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1));
|
||||
void draw_style_box(RequiredParam<StyleBox> p_style_box, const Rect2 &p_rect);
|
||||
void draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, Ref<Texture2D> p_texture = Ref<Texture2D>());
|
||||
void draw_polygon(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture2D> p_texture = Ref<Texture2D>());
|
||||
void draw_colored_polygon(const Vector<Point2> &p_points, const Color &p_color, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture2D> p_texture = Ref<Texture2D>());
|
||||
|
||||
void draw_mesh(const Ref<Mesh> &p_mesh, const Ref<Texture2D> &p_texture, const Transform2D &p_transform = Transform2D(), const Color &p_modulate = Color(1, 1, 1));
|
||||
void draw_multimesh(const Ref<MultiMesh> &p_multimesh, const Ref<Texture2D> &p_texture);
|
||||
void draw_mesh(RequiredParam<Mesh> p_mesh, const Ref<Texture2D> &p_texture, const Transform2D &p_transform = Transform2D(), const Color &p_modulate = Color(1, 1, 1));
|
||||
void draw_multimesh(RequiredParam<MultiMesh> p_multimesh, const Ref<Texture2D> &p_texture);
|
||||
|
||||
void draw_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_multiline_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_max_lines = -1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::LineBreakFlag> p_brk_flags = TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND, BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_string(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_multiline_string(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_max_lines = -1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::LineBreakFlag> p_brk_flags = TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND, BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
|
||||
void draw_string_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_multiline_string_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_max_lines = -1, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::LineBreakFlag> p_brk_flags = TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND, BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_string_outline(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
void draw_multiline_string_outline(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_text, HorizontalAlignment p_alignment = HORIZONTAL_ALIGNMENT_LEFT, float p_width = -1, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_max_lines = -1, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), BitField<TextServer::LineBreakFlag> p_brk_flags = TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND, BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_WORD_BOUND, TextServer::Direction p_direction = TextServer::DIRECTION_AUTO, TextServer::Orientation p_orientation = TextServer::ORIENTATION_HORIZONTAL, float p_oversampling = 0.0) const;
|
||||
|
||||
void draw_char(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_char, int p_font_size = Font::DEFAULT_FONT_SIZE, const Color &p_modulate = Color(1.0, 1.0, 1.0), float p_oversampling = 0.0) const;
|
||||
void draw_char_outline(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_char, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), float p_oversampling = 0.0) const;
|
||||
void draw_char(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_char, int p_font_size = Font::DEFAULT_FONT_SIZE, const Color &p_modulate = Color(1.0, 1.0, 1.0), float p_oversampling = 0.0) const;
|
||||
void draw_char_outline(RequiredParam<Font> p_font, const Point2 &p_pos, const String &p_char, int p_font_size = Font::DEFAULT_FONT_SIZE, int p_size = 1, const Color &p_modulate = Color(1.0, 1.0, 1.0), float p_oversampling = 0.0) const;
|
||||
|
||||
void draw_set_transform(const Point2 &p_offset, real_t p_rot = 0.0, const Size2 &p_scale = Size2(1.0, 1.0));
|
||||
void draw_set_transform_matrix(const Transform2D &p_matrix);
|
||||
@@ -387,7 +387,7 @@ public:
|
||||
virtual void set_use_parent_material(bool p_use_parent_material);
|
||||
bool get_use_parent_material() const;
|
||||
|
||||
Ref<InputEvent> make_input_local(const Ref<InputEvent> &p_event) const;
|
||||
RequiredResult<InputEvent> make_input_local(RequiredParam<InputEvent> p_event) const;
|
||||
Vector2 make_canvas_position_local(const Vector2 &screen_point) const;
|
||||
|
||||
Vector2 get_global_mouse_position() const;
|
||||
|
||||
@@ -494,9 +494,9 @@ void Node::_propagate_physics_interpolation_reset_requested(bool p_requested) {
|
||||
data.blocked--;
|
||||
}
|
||||
|
||||
void Node::move_child(Node *p_child, int p_index) {
|
||||
void Node::move_child(RequiredParam<Node> rp_child, int p_index) {
|
||||
ERR_FAIL_COND_MSG(data.tree && !Thread::is_main_thread(), "Moving child node positions inside the SceneTree is only allowed from the main thread. Use call_deferred(\"move_child\",child,index).");
|
||||
ERR_FAIL_NULL(p_child);
|
||||
EXTRACT_PARAM_OR_FAIL(p_child, rp_child);
|
||||
ERR_FAIL_COND_MSG(p_child->data.parent != this, "Child is not a child of this node.");
|
||||
|
||||
_update_children_cache();
|
||||
@@ -1720,9 +1720,9 @@ void Node::add_child(RequiredParam<Node> rp_child, bool p_force_readable_name, I
|
||||
_add_child_nocheck(p_child, p_child->data.name, p_internal);
|
||||
}
|
||||
|
||||
void Node::add_sibling(Node *p_sibling, bool p_force_readable_name) {
|
||||
void Node::add_sibling(RequiredParam<Node> rp_sibling, bool p_force_readable_name) {
|
||||
ERR_FAIL_COND_MSG(data.tree && !Thread::is_main_thread(), "Adding a sibling to a node inside the SceneTree is only allowed from the main thread. Use call_deferred(\"add_sibling\",node).");
|
||||
ERR_FAIL_NULL(p_sibling);
|
||||
EXTRACT_PARAM_OR_FAIL(p_sibling, rp_sibling);
|
||||
ERR_FAIL_COND_MSG(p_sibling == this, vformat("Can't add sibling '%s' to itself.", p_sibling->get_name())); // adding to itself!
|
||||
ERR_FAIL_NULL(data.parent);
|
||||
ERR_FAIL_COND_MSG(data.parent->data.blocked > 0, "Parent node is busy setting up children, `add_sibling()` failed. Consider using `add_sibling.call_deferred(sibling)` instead.");
|
||||
@@ -1732,9 +1732,9 @@ void Node::add_sibling(Node *p_sibling, bool p_force_readable_name) {
|
||||
data.parent->_move_child(p_sibling, get_index() + 1);
|
||||
}
|
||||
|
||||
void Node::remove_child(Node *p_child) {
|
||||
void Node::remove_child(RequiredParam<Node> rp_child) {
|
||||
ERR_FAIL_COND_MSG(data.tree && !Thread::is_main_thread(), "Removing children from a node inside the SceneTree is only allowed from the main thread. Use call_deferred(\"remove_child\",node).");
|
||||
ERR_FAIL_NULL(p_child);
|
||||
EXTRACT_PARAM_OR_FAIL(p_child, rp_child);
|
||||
ERR_FAIL_COND_MSG(data.blocked > 0, "Parent node is busy adding/removing children, `remove_child()` can't be called at this time. Consider using `remove_child.call_deferred(child)` instead.");
|
||||
ERR_FAIL_COND(p_child->data.parent != this);
|
||||
|
||||
@@ -2039,9 +2039,9 @@ TypedArray<Node> Node::find_children(const String &p_pattern, const String &p_ty
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Node::reparent(Node *p_parent, bool p_keep_global_transform) {
|
||||
void Node::reparent(RequiredParam<Node> rp_parent, bool p_keep_global_transform) {
|
||||
ERR_THREAD_GUARD
|
||||
ERR_FAIL_NULL(p_parent);
|
||||
EXTRACT_PARAM_OR_FAIL(p_parent, rp_parent);
|
||||
ERR_FAIL_NULL_MSG(data.parent, "Node needs a parent to be reparented.");
|
||||
ERR_FAIL_COND_MSG(p_parent == this, vformat("Can't reparent '%s' to itself.", p_parent->get_name()));
|
||||
|
||||
@@ -2136,8 +2136,8 @@ Window *Node::get_last_exclusive_window() const {
|
||||
return w;
|
||||
}
|
||||
|
||||
bool Node::is_ancestor_of(const Node *p_node) const {
|
||||
ERR_FAIL_NULL_V(p_node, false);
|
||||
bool Node::is_ancestor_of(RequiredParam<const Node> rp_node) const {
|
||||
EXTRACT_PARAM_OR_FAIL_V(p_node, rp_node, false);
|
||||
Node *p = p_node->data.parent;
|
||||
while (p) {
|
||||
if (p == this) {
|
||||
@@ -2149,10 +2149,10 @@ bool Node::is_ancestor_of(const Node *p_node) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Node::is_greater_than(const Node *p_node) const {
|
||||
bool Node::is_greater_than(RequiredParam<const Node> rp_node) const {
|
||||
// parent->get_child(1) > parent->get_child(0) > parent
|
||||
|
||||
ERR_FAIL_NULL_V(p_node, false);
|
||||
EXTRACT_PARAM_OR_FAIL_V(p_node, rp_node, false);
|
||||
ERR_FAIL_COND_V(!data.tree, false);
|
||||
ERR_FAIL_COND_V(p_node->data.tree != data.tree, false);
|
||||
|
||||
@@ -2326,8 +2326,8 @@ Node *Node::find_common_parent_with(const Node *p_node) const {
|
||||
return const_cast<Node *>(common_parent);
|
||||
}
|
||||
|
||||
NodePath Node::get_path_to(const Node *p_node, bool p_use_unique_path) const {
|
||||
ERR_FAIL_NULL_V(p_node, NodePath());
|
||||
NodePath Node::get_path_to(RequiredParam<const Node> rp_node, bool p_use_unique_path) const {
|
||||
EXTRACT_PARAM_OR_FAIL_V(p_node, rp_node, NodePath());
|
||||
|
||||
if (this == p_node) {
|
||||
return NodePath(".");
|
||||
@@ -2673,9 +2673,9 @@ String Node::get_editor_description() const {
|
||||
return data.editor_description;
|
||||
}
|
||||
|
||||
void Node::set_editable_instance(Node *p_node, bool p_editable) {
|
||||
void Node::set_editable_instance(RequiredParam<Node> rp_node, bool p_editable) {
|
||||
ERR_THREAD_GUARD
|
||||
ERR_FAIL_NULL(p_node);
|
||||
EXTRACT_PARAM_OR_FAIL(p_node, rp_node);
|
||||
ERR_FAIL_COND(!is_ancestor_of(p_node));
|
||||
if (!p_editable) {
|
||||
p_node->data.editable_instance = false;
|
||||
@@ -2689,10 +2689,8 @@ void Node::set_editable_instance(Node *p_node, bool p_editable) {
|
||||
p_node->_emit_editor_state_changed();
|
||||
}
|
||||
|
||||
bool Node::is_editable_instance(const Node *p_node) const {
|
||||
if (!p_node) {
|
||||
return false; // Easier, null is never editable. :)
|
||||
}
|
||||
bool Node::is_editable_instance(RequiredParam<const Node> rp_node) const {
|
||||
EXTRACT_PARAM_OR_FAIL_V(p_node, rp_node, false);
|
||||
ERR_FAIL_COND_V(!is_ancestor_of(p_node), false);
|
||||
return p_node->data.editable_instance;
|
||||
}
|
||||
@@ -3206,9 +3204,9 @@ static void find_owned_by(Node *p_by, Node *p_node, List<Node *> *p_owned) {
|
||||
}
|
||||
}
|
||||
|
||||
void Node::replace_by(Node *p_node, bool p_keep_groups) {
|
||||
void Node::replace_by(RequiredParam<Node> rp_node, bool p_keep_groups) {
|
||||
ERR_THREAD_GUARD
|
||||
ERR_FAIL_NULL(p_node);
|
||||
EXTRACT_PARAM_OR_FAIL(p_node, rp_node);
|
||||
ERR_FAIL_COND(p_node->data.parent);
|
||||
|
||||
List<Node *> owned = data.owned;
|
||||
|
||||
@@ -432,10 +432,10 @@ protected:
|
||||
GDVIRTUAL0RC(Vector<String>, _get_accessibility_configuration_warnings)
|
||||
GDVIRTUAL0RC(Vector<String>, _get_configuration_warnings)
|
||||
|
||||
GDVIRTUAL1(_input, Ref<InputEvent>)
|
||||
GDVIRTUAL1(_shortcut_input, Ref<InputEvent>)
|
||||
GDVIRTUAL1(_unhandled_input, Ref<InputEvent>)
|
||||
GDVIRTUAL1(_unhandled_key_input, Ref<InputEvent>)
|
||||
GDVIRTUAL1(_input, RequiredParam<InputEvent>)
|
||||
GDVIRTUAL1(_shortcut_input, RequiredParam<InputEvent>)
|
||||
GDVIRTUAL1(_unhandled_input, RequiredParam<InputEvent>)
|
||||
GDVIRTUAL1(_unhandled_key_input, RequiredParam<InputEvent>)
|
||||
|
||||
GDVIRTUAL0RC(RID, _get_focused_accessibility_element)
|
||||
|
||||
@@ -513,8 +513,8 @@ public:
|
||||
InternalMode get_internal_mode() const;
|
||||
|
||||
void add_child(RequiredParam<Node> rp_child, bool p_force_readable_name = false, InternalMode p_internal = INTERNAL_MODE_DISABLED);
|
||||
void add_sibling(Node *p_sibling, bool p_force_readable_name = false);
|
||||
void remove_child(Node *p_child);
|
||||
void add_sibling(RequiredParam<Node> rp_sibling, bool p_force_readable_name = false);
|
||||
void remove_child(RequiredParam<Node> rp_child);
|
||||
|
||||
/// Optimal way to iterate the children of this node.
|
||||
/// The caller is responsible to ensure:
|
||||
@@ -534,7 +534,7 @@ public:
|
||||
bool has_node_and_resource(const NodePath &p_path) const;
|
||||
Node *get_node_and_resource(const NodePath &p_path, Ref<Resource> &r_res, Vector<StringName> &r_leftover_subpath, bool p_last_is_property = true) const;
|
||||
|
||||
virtual void reparent(Node *p_parent, bool p_keep_global_transform = true);
|
||||
virtual void reparent(RequiredParam<Node> p_parent, bool p_keep_global_transform = true);
|
||||
Node *get_parent() const;
|
||||
Node *find_parent(const String &p_pattern) const;
|
||||
|
||||
@@ -553,11 +553,11 @@ public:
|
||||
_FORCE_INLINE_ bool is_inside_tree() const { return data.tree; }
|
||||
bool is_internal() const { return data.internal_mode != INTERNAL_MODE_DISABLED; }
|
||||
|
||||
bool is_ancestor_of(const Node *p_node) const;
|
||||
bool is_greater_than(const Node *p_node) const;
|
||||
bool is_ancestor_of(RequiredParam<const Node> p_node) const;
|
||||
bool is_greater_than(RequiredParam<const Node> p_node) const;
|
||||
|
||||
NodePath get_path() const;
|
||||
NodePath get_path_to(const Node *p_node, bool p_use_unique_path = false) const;
|
||||
NodePath get_path_to(RequiredParam<const Node> p_node, bool p_use_unique_path = false) const;
|
||||
Node *find_common_parent_with(const Node *p_node) const;
|
||||
|
||||
void add_to_group(const StringName &p_identifier, bool p_persistent = false);
|
||||
@@ -572,7 +572,7 @@ public:
|
||||
void get_groups(List<GroupInfo> *p_groups) const;
|
||||
int get_persistent_group_count() const;
|
||||
|
||||
void move_child(Node *p_child, int p_index);
|
||||
void move_child(RequiredParam<Node> p_child, int p_index);
|
||||
void _move_child(Node *p_child, int p_index, bool p_ignore_end = false);
|
||||
|
||||
void set_owner(Node *p_owner);
|
||||
@@ -621,8 +621,8 @@ public:
|
||||
void set_editor_description(const String &p_editor_description);
|
||||
String get_editor_description() const;
|
||||
|
||||
void set_editable_instance(Node *p_node, bool p_editable);
|
||||
bool is_editable_instance(const Node *p_node) const;
|
||||
void set_editable_instance(RequiredParam<Node> p_node, bool p_editable);
|
||||
bool is_editable_instance(RequiredParam<const Node> p_node) const;
|
||||
Node *get_deepest_editable_node(Node *p_start_node) const;
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
@@ -742,7 +742,7 @@ public:
|
||||
return binds;
|
||||
}
|
||||
|
||||
void replace_by(Node *p_node, bool p_keep_groups = false);
|
||||
void replace_by(RequiredParam<Node> p_node, bool p_keep_groups = false);
|
||||
|
||||
void set_process_mode(ProcessMode p_mode);
|
||||
ProcessMode get_process_mode() const;
|
||||
|
||||
@@ -1609,9 +1609,9 @@ void SceneTree::_flush_delete_queue() {
|
||||
}
|
||||
}
|
||||
|
||||
void SceneTree::queue_delete(Object *p_object) {
|
||||
void SceneTree::queue_delete(RequiredParam<Object> rp_object) {
|
||||
_THREAD_SAFE_METHOD_
|
||||
ERR_FAIL_NULL(p_object);
|
||||
EXTRACT_PARAM_OR_FAIL(p_object, rp_object);
|
||||
p_object->_is_queued_for_deletion = true;
|
||||
delete_queue.push_back(p_object->get_instance_id());
|
||||
}
|
||||
@@ -1684,8 +1684,8 @@ Error SceneTree::change_scene_to_file(const String &p_path) {
|
||||
return change_scene_to_packed(new_scene);
|
||||
}
|
||||
|
||||
Error SceneTree::change_scene_to_packed(const Ref<PackedScene> &p_scene) {
|
||||
ERR_FAIL_COND_V_MSG(p_scene.is_null(), ERR_INVALID_PARAMETER, "Can't change to a null scene. Use unload_current_scene() if you wish to unload it.");
|
||||
Error SceneTree::change_scene_to_packed(RequiredParam<PackedScene> rp_scene) {
|
||||
EXTRACT_PARAM_OR_FAIL_V_MSG(p_scene, rp_scene, ERR_INVALID_PARAMETER, "Can't change to a null scene. Use unload_current_scene() if you wish to unload it.");
|
||||
|
||||
Node *new_scene = p_scene->instantiate();
|
||||
ERR_FAIL_NULL_V(new_scene, ERR_CANT_CREATE);
|
||||
@@ -1693,8 +1693,8 @@ Error SceneTree::change_scene_to_packed(const Ref<PackedScene> &p_scene) {
|
||||
return change_scene_to_node(new_scene);
|
||||
}
|
||||
|
||||
Error SceneTree::change_scene_to_node(Node *p_node) {
|
||||
ERR_FAIL_NULL_V_MSG(p_node, ERR_INVALID_PARAMETER, "Can't change to a null node. Use unload_current_scene() if you wish to unload it.");
|
||||
Error SceneTree::change_scene_to_node(RequiredParam<Node> rp_node) {
|
||||
EXTRACT_PARAM_OR_FAIL_V_MSG(p_node, rp_node, ERR_INVALID_PARAMETER, "Can't change to a null node. Use unload_current_scene() if you wish to unload it.");
|
||||
ERR_FAIL_COND_V_MSG(p_node->is_inside_tree(), ERR_UNCONFIGURED, "The new scene node can't already be inside scene tree.");
|
||||
|
||||
// If called again while a change is pending.
|
||||
@@ -1739,7 +1739,7 @@ void SceneTree::add_current_scene(Node *p_current) {
|
||||
root->add_child(p_current);
|
||||
}
|
||||
|
||||
Ref<SceneTreeTimer> SceneTree::create_timer(double p_delay_sec, bool p_process_always, bool p_process_in_physics, bool p_ignore_time_scale) {
|
||||
RequiredResult<SceneTreeTimer> SceneTree::create_timer(double p_delay_sec, bool p_process_always, bool p_process_in_physics, bool p_ignore_time_scale) {
|
||||
_THREAD_SAFE_METHOD_
|
||||
Ref<SceneTreeTimer> stt;
|
||||
stt.instantiate();
|
||||
|
||||
@@ -407,7 +407,7 @@ public:
|
||||
|
||||
int get_node_count() const;
|
||||
|
||||
void queue_delete(Object *p_object);
|
||||
void queue_delete(RequiredParam<Object> p_object);
|
||||
|
||||
Vector<Node *> get_nodes_in_group(const StringName &p_group);
|
||||
Node *get_first_node_in_group(const StringName &p_group);
|
||||
@@ -423,12 +423,12 @@ public:
|
||||
void set_current_scene(Node *p_scene);
|
||||
Node *get_current_scene() const;
|
||||
Error change_scene_to_file(const String &p_path);
|
||||
Error change_scene_to_packed(const Ref<PackedScene> &p_scene);
|
||||
Error change_scene_to_node(Node *p_node);
|
||||
Error change_scene_to_packed(RequiredParam<PackedScene> p_scene);
|
||||
Error change_scene_to_node(RequiredParam<Node> p_node);
|
||||
Error reload_current_scene();
|
||||
void unload_current_scene();
|
||||
|
||||
Ref<SceneTreeTimer> create_timer(double p_delay_sec, bool p_process_always = true, bool p_process_in_physics = false, bool p_ignore_time_scale = false);
|
||||
RequiredResult<SceneTreeTimer> create_timer(double p_delay_sec, bool p_process_always = true, bool p_process_in_physics = false, bool p_ignore_time_scale = false);
|
||||
RequiredResult<Tween> create_tween();
|
||||
void remove_tween(const Ref<Tween> &p_tween);
|
||||
TypedArray<Tween> get_processed_tweens();
|
||||
|
||||
@@ -3453,10 +3453,10 @@ void Viewport::_drop_mouse_over(Control *p_until_control) {
|
||||
gui.sending_mouse_enter_exit_notifications = false;
|
||||
}
|
||||
|
||||
void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
|
||||
void Viewport::push_input(RequiredParam<InputEvent> rp_event, bool p_local_coords) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
ERR_FAIL_COND(!is_inside_tree());
|
||||
ERR_FAIL_COND(p_event.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_event, rp_event);
|
||||
|
||||
if (disable_input || disable_input_override) {
|
||||
return;
|
||||
@@ -3522,11 +3522,11 @@ void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
|
||||
}
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void Viewport::push_unhandled_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
|
||||
void Viewport::push_unhandled_input(RequiredParam<InputEvent> rp_event, bool p_local_coords) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
WARN_DEPRECATED_MSG(R"*(The "push_unhandled_input()" method is deprecated, use "push_input()" instead.)*");
|
||||
ERR_FAIL_COND(!is_inside_tree());
|
||||
ERR_FAIL_COND(p_event.is_null());
|
||||
EXTRACT_PARAM_OR_FAIL(p_event, rp_event);
|
||||
|
||||
local_input_handled = false;
|
||||
|
||||
|
||||
@@ -609,9 +609,9 @@ public:
|
||||
Vector2 get_camera_rect_size() const;
|
||||
|
||||
void push_text_input(const String &p_text);
|
||||
void push_input(const Ref<InputEvent> &p_event, bool p_local_coords = false);
|
||||
void push_input(RequiredParam<InputEvent> p_event, bool p_local_coords = false);
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void push_unhandled_input(const Ref<InputEvent> &p_event, bool p_local_coords = false);
|
||||
void push_unhandled_input(RequiredParam<InputEvent> p_event, bool p_local_coords = false);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
void notify_mouse_entered();
|
||||
void notify_mouse_exited();
|
||||
|
||||
Reference in New Issue
Block a user