diff --git a/bt/bt_task.cpp b/bt/bt_task.cpp index 360586f..46f7913 100644 --- a/bt/bt_task.cpp +++ b/bt/bt_task.cpp @@ -276,8 +276,8 @@ void BTTask::_bind_methods() { ClassDB::bind_method(D_METHOD("get_agent"), &BTTask::get_agent); ClassDB::bind_method(D_METHOD("set_agent", "p_agent"), &BTTask::set_agent); - ClassDB::bind_method(D_METHOD("get_children"), &BTTask::_get_children); - ClassDB::bind_method(D_METHOD("set_children", "p_children"), &BTTask::_set_children); + ClassDB::bind_method(D_METHOD("_get_children"), &BTTask::_get_children); + ClassDB::bind_method(D_METHOD("_set_children", "p_children"), &BTTask::_set_children); ClassDB::bind_method(D_METHOD("get_blackboard"), &BTTask::get_blackboard); ClassDB::bind_method(D_METHOD("get_parent"), &BTTask::get_parent); @@ -287,7 +287,7 @@ void BTTask::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "agent", PROPERTY_HINT_RESOURCE_TYPE, "Object", 0), "set_agent", "get_agent"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "blackboard", PROPERTY_HINT_RESOURCE_TYPE, "Blackboard", 0), "", "get_blackboard"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "parent", PROPERTY_HINT_RESOURCE_TYPE, "BTTask", 0), "", "get_parent"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "children", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_children", "get_children"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "children", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_children", "_get_children"); ADD_PROPERTY(PropertyInfo(Variant::INT, "status", PROPERTY_HINT_NONE, "", 0), "", "get_status"); // Virtual methods. @@ -344,4 +344,4 @@ BTTask::~BTTask() { get_child(i)->parent = nullptr; get_child(i).unref(); } -} \ No newline at end of file +} diff --git a/doc_classes/BTTask.xml b/doc_classes/BTTask.xml index 9d5d097..a9ffa31 100644 --- a/doc_classes/BTTask.xml +++ b/doc_classes/BTTask.xml @@ -1,8 +1,13 @@ + Base class for BT tasks. + Base class for all behavior tree tasks. Tasks are arranged in a tree-like structure called behavior tree (BT). + Tasks perform work and return their status with [method _tick]. See [enum TaskStatus]. + There are several types of tasks: actions, conditions, decorators, and composites. Each type of task has its own corresponding subclass: [BTAction], [BTCondition], [BTDecorator], [BTComposite]. + [b]Note:[/b] Do not inherint [BTTask] directly for your own tasks, instead inherit one of the subtypes above. @@ -10,38 +15,48 @@ + Called when task is "entered", i.e. when task is executed while not having a [constant RUNNING] [member status]. + It is called before [method _tick] in the execution order. This method is used when preparation is needed before main work begins, usually when it takes more than one tick to finish the task. + Called when task is "exited", i.e. after [method _tick] returns [constant SUCCESS] or [constant FAILURE] status. + When [member custom_name] is empty, the string returned by this method is used to display the task by the editor. See [method get_task_name]. + The string returned by this method is displayed as a warning in the BT editor if the script that overrides it is a [code]tool[/code] script. + Called when task is initialized during behavior tree initialization. + Called when task is "ticked", i.e. executed by [BTPlayer] or [BTState] during update. + Returns [member TaskStatus]. + *Note:* Tasks perform their main function by implementing this method. + Adds a child task. The [code]p_child[/code] is placed at the end of the children list. @@ -49,50 +64,60 @@ + Adds a child task. The [code]p_child[/code] is placed at [code]p_idx[/code] position in the children list. + Clones the task and its children with the exported members copied. Sub-resources are shared for efficiency, except for [BBParam] subtypes, which are always copied. + Performs task's execution. During execution [method _enter] is called first, unless current task [member status] is [code]RUNNING[/code]. [method _tick] is called next to perform task's main function. If [constant SUCCESS] or [constant FAILURE] status is returned by [method _tick], [method _exit] will be called next. + Returns a child task by its index. + Returns the number of child tasks. + Returns the child task's index. If [code]p_child[/code] is not a child of the task, [code]-1[/code] is returned instead. + Returns the root task of the behavior tree. + The string returned by this method is used to represent the task in the editor. + [member custom_name] value is returned when it is not empty. Otherwise, the string constructed by [method _generate_name] is returned instead. + Returns [code]true[/code] if [code]p_child[/code] is a child of this task. @@ -100,65 +125,82 @@ + Initilizes the task. Assigns [member agent] and [member blackboard], and calls [method _setup] for the task and its children. + The method is called recursively for each child task. + Returns [code]true[/code] if this task is descendant of [code]p_task[/code]. I.e. this task must be a child of [code]p_task[/code] or one of its children or grandchildren. + Returns [code]true[/code] if this task is the root task of the tree. A behavior tree can have only one root task. + Returns the next task after this task in the children list of the [member parent]. + Returns [code]null[/code] if this task has no parent or it is the last child in the parent's children list. + Prints the subtree that starts with this task to console. + Removes [code]p_child[/code] task from children. + Removes a child task by index. + The agent is a contextual object for the task's behavior tree instance. Usually, the agent is an owner of the node with the behavior tree instance. - - + Provides access to the blackboard for this task and behavior tree. Blackboard is used to share data among tasks of the associated behavior tree. + See [Blackboard] for additional info. + User provided name for the task. If not empty, [code]custom_name[/code] is used by the editor to display the task. See [method get_task_name]. + The task's parent. + Last execution [enum TaskStatus] returned by [method _tick]. + Task wasn't executed yet or execution was cancelled. + Task is being performed and hasn't finished yet. + Task has finished with failure. + Task has finished with success.