From 224ceda390f2755dc3f91e81409d69d8f6e9e30a Mon Sep 17 00:00:00 2001 From: "Wilson E. Alvarez" Date: Sat, 2 Nov 2024 23:53:56 -0400 Subject: [PATCH] Fix forbidden comparisons between Ref and nullptr. Necessary when compiling with strict_checks=yes. Due to upstream change: https://github.com/godotengine/godot/commit/df29cc696f22e6b91b09284ee9ce0779ed77a3d9 --- blackboard/bb_param/bb_node.cpp | 2 +- blackboard/blackboard_plan.cpp | 2 +- bt/behavior_tree.cpp | 4 ++-- bt/bt_instance.cpp | 4 ++-- bt/bt_state.cpp | 2 +- bt/tasks/bt_comment.cpp | 2 +- bt/tasks/bt_task.cpp | 2 +- bt/tasks/decorators/bt_cooldown.cpp | 2 +- bt/tasks/decorators/bt_new_scope.cpp | 6 +++--- editor/blackboard_plan_editor.cpp | 20 ++++++++++---------- editor/editor_property_variable_name.cpp | 12 ++++++------ editor/limbo_ai_editor_plugin.cpp | 6 +++--- editor/task_tree.cpp | 6 +++--- editor/tree_search.cpp | 4 ++-- tests/test_task.h | 4 ++-- 15 files changed, 39 insertions(+), 39 deletions(-) diff --git a/blackboard/bb_param/bb_node.cpp b/blackboard/bb_param/bb_node.cpp index c841193..f7546ef 100644 --- a/blackboard/bb_param/bb_node.cpp +++ b/blackboard/bb_param/bb_node.cpp @@ -13,7 +13,7 @@ Variant BBNode::get_value(Node *p_scene_root, const Ref &p_blackboard, const Variant &p_default) { ERR_FAIL_NULL_V_MSG(p_scene_root, Variant(), "BBNode: get_value() failed - scene_root is null."); - ERR_FAIL_NULL_V_MSG(p_blackboard, Variant(), "BBNode: get_value() failed - blackboard is null."); + ERR_FAIL_COND_V_MSG(p_blackboard.is_null(), Variant(), "BBNode: get_value() failed - blackboard is null."); Variant val; if (get_value_source() == SAVED_VALUE) { diff --git a/blackboard/blackboard_plan.cpp b/blackboard/blackboard_plan.cpp index c4bee42..ff6dee1 100644 --- a/blackboard/blackboard_plan.cpp +++ b/blackboard/blackboard_plan.cpp @@ -430,7 +430,7 @@ void BlackboardPlan::populate_blackboard(const Ref &p_blackboard, bo if (has_mapping) { StringName target_var = parent_scope_mapping[p.first]; if (target_var != StringName()) { - ERR_CONTINUE_MSG(p_blackboard->get_parent() == nullptr, vformat("BlackboardPlan: Cannot link variable %s to parent scope because the parent scope is not set.", LimboUtility::get_singleton()->decorate_var(p.first))); + ERR_CONTINUE_MSG(p_blackboard->get_parent().is_null(), vformat("BlackboardPlan: Cannot link variable %s to parent scope because the parent scope is not set.", LimboUtility::get_singleton()->decorate_var(p.first))); p_blackboard->link_var(p.first, p_blackboard->get_parent(), target_var); } } diff --git a/bt/behavior_tree.cpp b/bt/behavior_tree.cpp index 64d5f4a..afd0feb 100644 --- a/bt/behavior_tree.cpp +++ b/bt/behavior_tree.cpp @@ -78,10 +78,10 @@ void BehaviorTree::copy_other(const Ref &p_other) { } Ref BehaviorTree::instantiate(Node *p_agent, const Ref &p_blackboard, Node *p_instance_owner, Node *p_custom_scene_root) const { - ERR_FAIL_COND_V_MSG(root_task == nullptr, nullptr, "BehaviorTree: Instantiation failed - BT has no valid root task."); + ERR_FAIL_COND_V_MSG(root_task.is_null(), nullptr, "BehaviorTree: Instantiation failed - BT has no valid root task."); ERR_FAIL_NULL_V_MSG(p_agent, nullptr, "BehaviorTree: Instantiation failed - agent can't be null."); ERR_FAIL_NULL_V_MSG(p_instance_owner, nullptr, "BehaviorTree: Instantiation failed -- instance owner can't be null."); - ERR_FAIL_NULL_V_MSG(p_blackboard, nullptr, "BehaviorTree: Instantiation failed - blackboard can't be null."); + ERR_FAIL_COND_V_MSG(p_blackboard.is_null(), nullptr, "BehaviorTree: Instantiation failed - blackboard can't be null."); Node *scene_root = p_custom_scene_root ? p_custom_scene_root : p_instance_owner->get_owner(); ERR_FAIL_NULL_V_MSG(scene_root, nullptr, "BehaviorTree: Instantiation failed - unable to establish scene root. This is likely due to the instance owner not being owned by a scene node and custom_scene_root being null."); Ref root_copy = root_task->clone(); diff --git a/bt/bt_instance.cpp b/bt/bt_instance.cpp index 2f95dc8..8b78cc9 100644 --- a/bt/bt_instance.cpp +++ b/bt/bt_instance.cpp @@ -25,7 +25,7 @@ #endif Ref BTInstance::create(Ref p_root_task, String p_source_bt_path, Node *p_owner_node) { - ERR_FAIL_NULL_V(p_root_task, nullptr); + ERR_FAIL_COND_V(p_root_task.is_null(), nullptr); ERR_FAIL_NULL_V(p_owner_node, nullptr); Ref inst; inst.instantiate(); @@ -102,7 +102,7 @@ double BTInstance::_get_mean_update_time_msec_and_reset() { void BTInstance::_add_custom_monitor() { ERR_FAIL_NULL(get_owner_node()); - ERR_FAIL_NULL(root_task); + ERR_FAIL_COND(root_task.is_null()); ERR_FAIL_NULL(root_task->get_agent()); if (monitor_id == StringName()) { diff --git a/bt/bt_state.cpp b/bt/bt_state.cpp index 5449943..835d382 100644 --- a/bt/bt_state.cpp +++ b/bt/bt_state.cpp @@ -98,7 +98,7 @@ void BTState::_update(double p_delta) { // Bail out if a transition happened in the meantime. return; } - ERR_FAIL_NULL(bt_instance); + ERR_FAIL_COND(bt_instance.is_null()); BT::Status status = bt_instance->update(p_delta); if (status == BTTask::SUCCESS) { get_root()->dispatch(success_event, Variant()); diff --git a/bt/tasks/bt_comment.cpp b/bt/tasks/bt_comment.cpp index b5689da..d2475b6 100644 --- a/bt/tasks/bt_comment.cpp +++ b/bt/tasks/bt_comment.cpp @@ -30,7 +30,7 @@ PackedStringArray BTComment::get_configuration_warnings() { if (get_child_count_excluding_comments() > 0) { warnings.append("Can only have other comment tasks as children."); } - if (get_parent() == nullptr) { + if (get_parent().is_null()) { warnings.append("Can't be the root task."); } return warnings; diff --git a/bt/tasks/bt_task.cpp b/bt/tasks/bt_task.cpp index 11ae322..315344e 100644 --- a/bt/tasks/bt_task.cpp +++ b/bt/tasks/bt_task.cpp @@ -163,7 +163,7 @@ void BTTask::set_custom_name(const String &p_name) { void BTTask::initialize(Node *p_agent, const Ref &p_blackboard, Node *p_scene_root) { ERR_FAIL_NULL(p_agent); - ERR_FAIL_NULL(p_blackboard); + ERR_FAIL_COND(p_blackboard.is_null()); ERR_FAIL_NULL(p_scene_root); data.agent = p_agent; data.blackboard = p_blackboard; diff --git a/bt/tasks/decorators/bt_cooldown.cpp b/bt/tasks/decorators/bt_cooldown.cpp index c16199f..1997bce 100644 --- a/bt/tasks/decorators/bt_cooldown.cpp +++ b/bt/tasks/decorators/bt_cooldown.cpp @@ -80,7 +80,7 @@ void BTCooldown::_chill() { timer->set_time_left(duration); } else { timer = SCENE_TREE()->create_timer(duration, process_pause); - ERR_FAIL_NULL(timer); + ERR_FAIL_COND(timer.is_null()); timer->connect(LW_NAME(timeout), callable_mp(this, &BTCooldown::_on_timeout), CONNECT_ONE_SHOT); } } diff --git a/bt/tasks/decorators/bt_new_scope.cpp b/bt/tasks/decorators/bt_new_scope.cpp index 5a2b1c4..4098b6d 100644 --- a/bt/tasks/decorators/bt_new_scope.cpp +++ b/bt/tasks/decorators/bt_new_scope.cpp @@ -32,16 +32,16 @@ void BTNewScope::set_blackboard_plan(const Ref &p_plan) { #ifdef TOOLS_ENABLED void BTNewScope::_set_parent_scope_plan_from_bt() { - ERR_FAIL_NULL(get_blackboard_plan()); + ERR_FAIL_COND(get_blackboard_plan().is_null()); Ref bt = get_root()->editor_get_behavior_tree(); - ERR_FAIL_NULL(bt); + ERR_FAIL_COND(bt.is_null()); get_blackboard_plan()->set_parent_scope_plan_provider(callable_mp(bt.ptr(), &BehaviorTree::get_blackboard_plan)); } #endif // TOOLS_ENABLED void BTNewScope::initialize(Node *p_agent, const Ref &p_blackboard, Node *p_scene_root) { ERR_FAIL_COND(p_agent == nullptr); - ERR_FAIL_COND(p_blackboard == nullptr); + ERR_FAIL_COND(p_blackboard.is_null()); Ref bb; if (blackboard_plan.is_valid()) { diff --git a/editor/blackboard_plan_editor.cpp b/editor/blackboard_plan_editor.cpp index b9dd910..75c1bfc 100644 --- a/editor/blackboard_plan_editor.cpp +++ b/editor/blackboard_plan_editor.cpp @@ -46,7 +46,7 @@ LineEdit *BlackboardPlanEditor::_get_name_edit(int p_row_index) const { } void BlackboardPlanEditor::_add_var() { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); int suffix = 1; StringName var_name = default_var_name == StringName() ? "var" : default_var_name; @@ -65,14 +65,14 @@ void BlackboardPlanEditor::_add_var() { } void BlackboardPlanEditor::_trash_var(int p_index) { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); StringName var_name = plan->get_var_by_index(p_index).first; plan->remove_var(var_name); _refresh(); } void BlackboardPlanEditor::_rename_var(const StringName &p_new_name, int p_index) { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); LineEdit *name_edit = _get_name_edit(p_index); ERR_FAIL_NULL(name_edit); @@ -96,7 +96,7 @@ void BlackboardPlanEditor::_rename_var(const StringName &p_new_name, int p_index } void BlackboardPlanEditor::_change_var_type(Variant::Type p_new_type, int p_index) { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); BBVariable var = plan->get_var_by_index(p_index).second; if (var.get_type() == p_new_type) { @@ -115,14 +115,14 @@ void BlackboardPlanEditor::_change_var_type(Variant::Type p_new_type, int p_inde } void BlackboardPlanEditor::_change_var_hint(PropertyHint p_new_hint, int p_index) { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); plan->get_var_by_index(p_index).second.set_hint(p_new_hint); plan->notify_property_list_changed(); _refresh(); } void BlackboardPlanEditor::_change_var_hint_string(const String &p_new_hint_string, int p_index) { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); plan->get_var_by_index(p_index).second.set_hint_string(p_new_hint_string); plan->notify_property_list_changed(); } @@ -472,14 +472,14 @@ BlackboardPlanEditor::BlackboardPlanEditor() { // ***** EditorInspectorPluginBBPlan ***** void EditorInspectorPluginBBPlan::_edit_plan(const Ref &p_plan) { - ERR_FAIL_NULL(p_plan); + ERR_FAIL_COND(p_plan.is_null()); plan_editor->edit_plan(p_plan); plan_editor->popup_centered(); } void EditorInspectorPluginBBPlan::_open_base_plan(const Ref &p_plan) { - ERR_FAIL_NULL(p_plan); - ERR_FAIL_NULL(p_plan->get_base_plan()); + ERR_FAIL_COND(p_plan.is_null()); + ERR_FAIL_COND(p_plan->get_base_plan().is_null()); EditorInterface::get_singleton()->call_deferred("edit_resource", p_plan->get_base_plan()); } @@ -501,7 +501,7 @@ void EditorInspectorPluginBBPlan::parse_begin(Object *p_object) { void EditorInspectorPluginBBPlan::_parse_begin(Object *p_object) { #endif Ref plan = Object::cast_to(p_object); - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); PanelContainer *panel = memnew(PanelContainer); ADD_STYLEBOX_OVERRIDE(panel, LW_NAME(panel), toolbar_style); diff --git a/editor/editor_property_variable_name.cpp b/editor/editor_property_variable_name.cpp index c2eeff8..6a88a47 100644 --- a/editor/editor_property_variable_name.cpp +++ b/editor/editor_property_variable_name.cpp @@ -36,7 +36,7 @@ int EditorPropertyVariableName::last_caret_column = 0; //***** EditorPropertyVariableName void EditorPropertyVariableName::_show_variables_popup() { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); variables_popup->clear(); variables_popup->reset_size(); @@ -109,7 +109,7 @@ void EditorPropertyVariableName::_update_status() { } void EditorPropertyVariableName::_status_pressed() { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); if (!plan->has_var(name_edit->get_text())) { BlackboardPlanEditor::get_singleton()->set_defaults(name_edit->get_text(), expected_type == Variant::NIL ? Variant::FLOAT : expected_type, @@ -120,14 +120,14 @@ void EditorPropertyVariableName::_status_pressed() { } void EditorPropertyVariableName::_status_mouse_entered() { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); if (!plan->has_var(name_edit->get_text())) { status_btn->set_button_icon(theme_cache.var_add_icon); } } void EditorPropertyVariableName::_status_mouse_exited() { - ERR_FAIL_NULL(plan); + ERR_FAIL_COND(plan.is_null()); _update_status(); } @@ -257,7 +257,7 @@ bool EditorInspectorPluginVariableName::_parse_property(Object *p_object, const Variant default_value; if (is_mapping) { plan.reference_ptr(Object::cast_to(p_object)); - ERR_FAIL_NULL_V(plan, false); + ERR_FAIL_COND_V(plan.is_null(), false); String var_name = p_path.trim_prefix("mapping/"); if (plan->has_var(var_name)) { BBVariable variable = plan->get_var(var_name); @@ -272,7 +272,7 @@ bool EditorInspectorPluginVariableName::_parse_property(Object *p_object, const plan = parent_plan; } } - ERR_FAIL_NULL_V(plan, false); + ERR_FAIL_COND_V(plan.is_null(), false); } else { plan = editor_plan_provider.call(); } diff --git a/editor/limbo_ai_editor_plugin.cpp b/editor/limbo_ai_editor_plugin.cpp index 49e816e..ea35fd4 100644 --- a/editor/limbo_ai_editor_plugin.cpp +++ b/editor/limbo_ai_editor_plugin.cpp @@ -183,7 +183,7 @@ void LimboAIEditor::_remove_task(const Ref &p_task) { ERR_FAIL_COND(p_task.is_null()); ERR_FAIL_COND(task_tree->get_bt().is_null()); EditorUndoRedoManager *undo_redo = _new_undo_redo_action(TTR("Remove BT Task")); - if (p_task->get_parent() == nullptr) { + if (p_task->get_parent().is_null()) { ERR_FAIL_COND(task_tree->get_bt()->get_root_task() != p_task); undo_redo->add_do_method(task_tree->get_bt().ptr(), LW_NAME(set_root_task), Variant()); undo_redo->add_undo_method(task_tree->get_bt().ptr(), LW_NAME(set_root_task), task_tree->get_bt()->get_root_task()); @@ -682,7 +682,7 @@ void LimboAIEditor::_action_selected(int p_id) { void LimboAIEditor::_on_probability_edited(double p_value) { Ref selected = task_tree->get_selected(); - ERR_FAIL_COND(selected == nullptr); + ERR_FAIL_COND(selected.is_null()); Ref probability_selector = selected->get_parent(); ERR_FAIL_COND(probability_selector.is_null()); if (percent_mode->is_pressed()) { @@ -1186,7 +1186,7 @@ void LimboAIEditor::_tab_menu_option_selected(int p_id) { } break; case TAB_JUMP_TO_OWNER: { Ref bt = history[idx_history]; - ERR_FAIL_NULL(bt); + ERR_FAIL_COND(bt.is_null()); String bt_path = bt->get_path(); if (!bt_path.is_empty()) { owner_picker->pick_and_open_owner_of_resource(bt_path); diff --git a/editor/task_tree.cpp b/editor/task_tree.cpp index efd57b2..f215539 100644 --- a/editor/task_tree.cpp +++ b/editor/task_tree.cpp @@ -192,7 +192,7 @@ void TaskTree::_on_item_collapsed(Object *p_obj) { } Ref task = item->get_metadata(0); - ERR_FAIL_NULL(task); + ERR_FAIL_COND(task.is_null()); task->set_display_collapsed(item->is_collapsed()); } @@ -574,7 +574,7 @@ void TaskTree::_bind_methods() { // TreeSearch API void TaskTree::tree_search_show_and_focus() { - ERR_FAIL_NULL(tree_search); + ERR_FAIL_COND(tree_search.is_null()); tree_search_panel->set_visible(true); tree_search_panel->focus_editor(); } @@ -587,7 +587,7 @@ TreeSearch::SearchInfo TaskTree::tree_search_get_search_info() const { } void TaskTree::tree_search_set_search_info(const TreeSearch::SearchInfo &p_search_info) { - ERR_FAIL_NULL(tree_search); + ERR_FAIL_COND(tree_search.is_null()); tree_search_panel->set_search_info(p_search_info); } diff --git a/editor/tree_search.cpp b/editor/tree_search.cpp index e510edd..ff8bb6d 100644 --- a/editor/tree_search.cpp +++ b/editor/tree_search.cpp @@ -158,7 +158,7 @@ void TreeSearch::_draw_highlight_item(TreeItem *p_tree_item, const Rect2 p_rect, if (font.is_null()) { font = p_tree_item->get_tree()->get_theme_font(LW_NAME(font)); } - ERR_FAIL_NULL(font); + ERR_FAIL_COND(font.is_null()); float font_size = p_tree_item->get_custom_font_size(0); if (font_size == -1) { font_size = p_tree_item->get_tree()->get_theme_font_size(LW_NAME(font)); @@ -176,7 +176,7 @@ void TreeSearch::_draw_highlight_item(TreeItem *p_tree_item, const Rect2 p_rect, // Stylebox Ref stylebox = p_tree_item->get_tree()->get_theme_stylebox(LW_NAME(Focus)); - ERR_FAIL_NULL(stylebox); + ERR_FAIL_COND(stylebox.is_null()); // Extract separation float h_sep = p_tree_item->get_tree()->get_theme_constant(LW_NAME(h_separation)); diff --git a/tests/test_task.h b/tests/test_task.h index 5e79ae0..efa3350 100644 --- a/tests/test_task.h +++ b/tests/test_task.h @@ -78,7 +78,7 @@ TEST_CASE("[Modules][LimboAI] BTTask") { SUBCASE("Test next_sibling()") { CHECK(child1->next_sibling() == child2); CHECK(child2->next_sibling() == child3); - CHECK(child3->next_sibling() == nullptr); + CHECK(child3->next_sibling().is_null()); } SUBCASE("Test remove_child()") { task->remove_child(child2); @@ -153,7 +153,7 @@ TEST_CASE("[Modules][LimboAI] BTTask") { CHECK(child3->get_root() == task); } SUBCASE("Test get_parent()") { - CHECK(task->get_parent() == nullptr); + CHECK(task->get_parent().is_null()); CHECK(child1->get_parent() == task); CHECK(child2->get_parent() == task); CHECK(child2->get_parent() == task);