diff --git a/editor/plugins/node_3d_editor_gizmos.cpp b/editor/plugins/node_3d_editor_gizmos.cpp index 1b2cd441ad54..7525093f757f 100644 --- a/editor/plugins/node_3d_editor_gizmos.cpp +++ b/editor/plugins/node_3d_editor_gizmos.cpp @@ -771,6 +771,10 @@ bool EditorNode3DGizmo::is_subgizmo_selected(int p_id) const { return ed->is_current_selected_gizmo(this) && ed->is_subgizmo_selected(p_id); } +bool EditorNode3DGizmo::is_gizmo_valid() const { + return valid; +} + Vector EditorNode3DGizmo::get_subgizmo_selection() const { Vector ret; @@ -1013,6 +1017,8 @@ Ref EditorNode3DGizmoPlugin::get_material(const String &p_na return materials[p_name][0]; } + ERR_FAIL_COND_V(!p_gizmo->is_gizmo_valid(), Ref()); + int index = (p_gizmo->is_selected() ? 1 : 0) + (p_gizmo->is_editable() ? 2 : 0); Ref mat = materials[p_name][index]; diff --git a/editor/plugins/node_3d_editor_gizmos.h b/editor/plugins/node_3d_editor_gizmos.h index 1916bc2058c8..528c04b9f597 100644 --- a/editor/plugins/node_3d_editor_gizmos.h +++ b/editor/plugins/node_3d_editor_gizmos.h @@ -130,6 +130,7 @@ class EditorNode3DGizmo : public Node3DGizmo { void handles_intersect_ray(Camera3D *p_camera, const Vector2 &p_point, bool p_shift_pressed, int &r_id, bool &r_secondary); bool intersect_ray(Camera3D *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal); bool is_subgizmo_selected(int p_id) const; + bool is_gizmo_valid() const; Vector get_subgizmo_selection() const; virtual void clear() override;