From 7b18a7143be13830f54fcfa8d49035f822e81eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 2 Oct 2020 09:41:55 +0200 Subject: Better validate CollisionShape3D config. warning after #38743 Relates to #42479, though I don't think it would crash in the master version. --- scene/2d/light_2d.cpp | 3 ++- scene/3d/collision_shape_3d.cpp | 15 +++++++-------- scene/3d/navigation_region_3d.cpp | 4 +++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index 52bf122789..217a210342 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -313,8 +313,9 @@ String Light2D::get_configuration_warning() const { String warning = Node2D::get_configuration_warning(); if (!texture.is_valid()) { - if (!warning.empty()) + if (!warning.empty()) { warning += "\n\n"; + } warning += TTR("A texture with the shape of the light must be supplied to the \"Texture\" property."); } diff --git a/scene/3d/collision_shape_3d.cpp b/scene/3d/collision_shape_3d.cpp index 6ff0ce6032..e1c691b89a 100644 --- a/scene/3d/collision_shape_3d.cpp +++ b/scene/3d/collision_shape_3d.cpp @@ -140,15 +140,14 @@ String CollisionShape3D::get_configuration_warning() const { warning += TTR("A shape must be provided for CollisionShape3D to function. Please create a shape resource for it."); } - if (Object::cast_to(get_parent())) { - if (Object::cast_to(*shape)) { - if (Object::cast_to(get_parent())->get_mode() != RigidBody3D::MODE_STATIC) { - if (!warning.empty()) { - warning += "\n\n"; - } - warning += TTR("ConcavePolygonShape3D doesn't support RigidBody3D in another mode than static."); - } + if (shape.is_valid() && + Object::cast_to(get_parent()) && + Object::cast_to(*shape) && + Object::cast_to(get_parent())->get_mode() != RigidBody3D::MODE_STATIC) { + if (!warning.empty()) { + warning += "\n\n"; } + warning += TTR("ConcavePolygonShape3D doesn't support RigidBody3D in another mode than static."); } return warning; diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp index 71bc74f433..3d3467583d 100644 --- a/scene/3d/navigation_region_3d.cpp +++ b/scene/3d/navigation_region_3d.cpp @@ -197,10 +197,12 @@ String NavigationRegion3D::get_configuration_warning() const { } warning += TTR("A NavigationMesh resource must be set or created for this node to work."); } + const Node3D *c = this; while (c) { - if (Object::cast_to(c)) + if (Object::cast_to(c)) { return warning; + } c = Object::cast_to(c->get_parent()); } -- cgit v1.2.3