Don't count BTComment tasks for configuration warnings
This commit is contained in:
parent
17c72b7378
commit
0ae2b6869a
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
PackedStringArray BTAction::get_configuration_warnings() const {
|
PackedStringArray BTAction::get_configuration_warnings() const {
|
||||||
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
||||||
if (get_child_count() != 0) {
|
if (get_child_count_excluding_comments() != 0) {
|
||||||
warnings.append("Action can't have child tasks.");
|
warnings.append("Action can't have child tasks.");
|
||||||
}
|
}
|
||||||
return warnings;
|
return warnings;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
PackedStringArray BTComposite::get_configuration_warnings() const {
|
PackedStringArray BTComposite::get_configuration_warnings() const {
|
||||||
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
||||||
if (get_child_count() < 1) {
|
if (get_child_count_excluding_comments() < 1) {
|
||||||
warnings.append("Composite should have at least one child task.");
|
warnings.append("Composite should have at least one child task.");
|
||||||
}
|
}
|
||||||
return warnings;
|
return warnings;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
PackedStringArray BTCondition::get_configuration_warnings() const {
|
PackedStringArray BTCondition::get_configuration_warnings() const {
|
||||||
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
||||||
if (get_child_count() != 0) {
|
if (get_child_count_excluding_comments() != 0) {
|
||||||
warnings.append("Condition task can't have child tasks.");
|
warnings.append("Condition task can't have child tasks.");
|
||||||
}
|
}
|
||||||
return warnings;
|
return warnings;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
PackedStringArray BTDecorator::get_configuration_warnings() const {
|
PackedStringArray BTDecorator::get_configuration_warnings() const {
|
||||||
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
PackedStringArray warnings = BTTask::get_configuration_warnings();
|
||||||
if (get_child_count() != 1) {
|
if (get_child_count_excluding_comments() != 1) {
|
||||||
warnings.append("Decorator should have a single child task.");
|
warnings.append("Decorator should have a single child task.");
|
||||||
}
|
}
|
||||||
return warnings;
|
return warnings;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "bt_task.h"
|
#include "bt_task.h"
|
||||||
|
|
||||||
|
#include "bt_comment.h"
|
||||||
#include "modules/limboai/blackboard/blackboard.h"
|
#include "modules/limboai/blackboard/blackboard.h"
|
||||||
#include "modules/limboai/util/limbo_string_names.h"
|
#include "modules/limboai/util/limbo_string_names.h"
|
||||||
#include "modules/limboai/util/limbo_utility.h"
|
#include "modules/limboai/util/limbo_utility.h"
|
||||||
|
@ -198,6 +199,16 @@ int BTTask::get_child_count() const {
|
||||||
return data.children.size();
|
return data.children.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int BTTask::get_child_count_excluding_comments() const {
|
||||||
|
int count = 0;
|
||||||
|
for (int i = 0; i < data.children.size(); i++) {
|
||||||
|
if (!data.children[i]->is_class_ptr(BTComment::get_class_ptr_static())) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
void BTTask::add_child(Ref<BTTask> p_child) {
|
void BTTask::add_child(Ref<BTTask> p_child) {
|
||||||
ERR_FAIL_COND_MSG(p_child->get_parent().is_valid(), "p_child already has a parent!");
|
ERR_FAIL_COND_MSG(p_child->get_parent().is_valid(), "p_child already has a parent!");
|
||||||
p_child->data.parent = this;
|
p_child->data.parent = this;
|
||||||
|
@ -291,6 +302,7 @@ void BTTask::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("execute", "p_delta"), &BTTask::execute);
|
ClassDB::bind_method(D_METHOD("execute", "p_delta"), &BTTask::execute);
|
||||||
ClassDB::bind_method(D_METHOD("get_child", "p_idx"), &BTTask::get_child);
|
ClassDB::bind_method(D_METHOD("get_child", "p_idx"), &BTTask::get_child);
|
||||||
ClassDB::bind_method(D_METHOD("get_child_count"), &BTTask::get_child_count);
|
ClassDB::bind_method(D_METHOD("get_child_count"), &BTTask::get_child_count);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_child_count_excluding_comments"), &BTTask::get_child_count_excluding_comments);
|
||||||
ClassDB::bind_method(D_METHOD("add_child", "p_child"), &BTTask::add_child);
|
ClassDB::bind_method(D_METHOD("add_child", "p_child"), &BTTask::add_child);
|
||||||
ClassDB::bind_method(D_METHOD("add_child_at_index", "p_child", "p_idx"), &BTTask::add_child_at_index);
|
ClassDB::bind_method(D_METHOD("add_child_at_index", "p_child", "p_idx"), &BTTask::add_child_at_index);
|
||||||
ClassDB::bind_method(D_METHOD("remove_child", "p_child"), &BTTask::remove_child);
|
ClassDB::bind_method(D_METHOD("remove_child", "p_child"), &BTTask::remove_child);
|
||||||
|
|
|
@ -93,6 +93,7 @@ public:
|
||||||
|
|
||||||
Ref<BTTask> get_child(int p_idx) const;
|
Ref<BTTask> get_child(int p_idx) const;
|
||||||
int get_child_count() const;
|
int get_child_count() const;
|
||||||
|
int get_child_count_excluding_comments() const;
|
||||||
void add_child(Ref<BTTask> p_child);
|
void add_child(Ref<BTTask> p_child);
|
||||||
void add_child_at_index(Ref<BTTask> p_child, int p_idx);
|
void add_child_at_index(Ref<BTTask> p_child, int p_idx);
|
||||||
void remove_child(Ref<BTTask> p_child);
|
void remove_child(Ref<BTTask> p_child);
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#include "modules/limboai/bt/behavior_tree.h"
|
#include "modules/limboai/bt/behavior_tree.h"
|
||||||
#include "modules/limboai/bt/tasks/bt_action.h"
|
#include "modules/limboai/bt/tasks/bt_action.h"
|
||||||
|
#include "modules/limboai/bt/tasks/bt_comment.h"
|
||||||
#include "modules/limboai/bt/tasks/bt_task.h"
|
#include "modules/limboai/bt/tasks/bt_task.h"
|
||||||
#include "modules/limboai/bt/tasks/composites/bt_parallel.h"
|
#include "modules/limboai/bt/tasks/composites/bt_parallel.h"
|
||||||
#include "modules/limboai/bt/tasks/composites/bt_selector.h"
|
#include "modules/limboai/bt/tasks/composites/bt_selector.h"
|
||||||
|
@ -94,7 +95,7 @@ void TaskTree::_update_item(TreeItem *p_item) {
|
||||||
Ref<BTTask> task = p_item->get_metadata(0);
|
Ref<BTTask> task = p_item->get_metadata(0);
|
||||||
ERR_FAIL_COND_MSG(!task.is_valid(), "Invalid task reference in metadata.");
|
ERR_FAIL_COND_MSG(!task.is_valid(), "Invalid task reference in metadata.");
|
||||||
p_item->set_text(0, task->get_task_name());
|
p_item->set_text(0, task->get_task_name());
|
||||||
if (task->is_class("BTComment")) {
|
if (task->is_class_ptr(BTComment::get_class_ptr_static())) {
|
||||||
p_item->set_custom_font(0, (get_theme_font(SNAME("doc_italic"), SNAME("EditorFonts"))));
|
p_item->set_custom_font(0, (get_theme_font(SNAME("doc_italic"), SNAME("EditorFonts"))));
|
||||||
p_item->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
p_item->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
||||||
} else if (task->get_custom_name().is_empty()) {
|
} else if (task->get_custom_name().is_empty()) {
|
||||||
|
|
Loading…
Reference in New Issue