:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.2/modules/limboai/doc_classes/BTProbabilitySelector.xml. .. _class_BTProbabilitySelector: BTProbabilitySelector ===================== **Inherits:** :ref:`BTComposite` **<** :ref:`BTTask` **<** :ref:`BT` BT composite that chooses a child task to execute based on attached probabilities. .. rst-class:: classref-introduction-group Description ----------- BTProbabilitySelector chooses a child task to execute based on attached probabilities. It is typically used for decision-making purposes. Probability distribution is calculated based on weights assigned to each child task. Returns ``SUCCESS`` when a child task results in ``SUCCESS``. Returns ``RUNNING`` when a child task results in ``RUNNING``. The behavior of BTProbabilitySelector when a child task results in ``FAILURE`` depends on the :ref:`abort_on_failure` value: - If :ref:`abort_on_failure` is ``false``, when a child task results in ``FAILURE``, BTProbabilitySelector will normalize the probability distribution over the remaining children and choose a new child task to be executed. If all child tasks fail, the composite will return ``FAILURE``. - If :ref:`abort_on_failure` is ``true``, when a child task results in ``FAILURE``, BTProbabilitySelector will not choose another child task to be executed and will immediately return ``FAILURE``. .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +------+--------------------------------------------------------------------------------+-----------+ | bool | :ref:`abort_on_failure` | ``false`` | +------+--------------------------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-------+-------------------------------------------------------------------------------------------------------------------------+ | float | :ref:`get_probability` **(** int child_idx **)** |const| | +-------+-------------------------------------------------------------------------------------------------------------------------+ | float | :ref:`get_total_weight` **(** **)** |const| | +-------+-------------------------------------------------------------------------------------------------------------------------+ | float | :ref:`get_weight` **(** int child_idx **)** |const| | +-------+-------------------------------------------------------------------------------------------------------------------------+ | bool | :ref:`has_probability` **(** int child_idx **)** |const| | +-------+-------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_probability` **(** int child_idx, float probability **)** | +-------+-------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_weight` **(** int child_idx, float weight **)** | +-------+-------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_BTProbabilitySelector_property_abort_on_failure: .. rst-class:: classref-property bool **abort_on_failure** = ``false`` .. rst-class:: classref-property-setget - void **set_abort_on_failure** **(** bool value **)** - bool **get_abort_on_failure** **(** **)** If ``true``, BTProbabilitySelector will not choose another child to execute and will return ``FAILURE`` when a child task results in ``FAILURE``. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_BTProbabilitySelector_method_get_probability: .. rst-class:: classref-method float **get_probability** **(** int child_idx **)** |const| Returns the child task's selection probability. .. rst-class:: classref-item-separator ---- .. _class_BTProbabilitySelector_method_get_total_weight: .. rst-class:: classref-method float **get_total_weight** **(** **)** |const| Returns the total weight of all child tasks. .. rst-class:: classref-item-separator ---- .. _class_BTProbabilitySelector_method_get_weight: .. rst-class:: classref-method float **get_weight** **(** int child_idx **)** |const| Returns the child task's weight within the weighted probability selection algorithm. .. rst-class:: classref-item-separator ---- .. _class_BTProbabilitySelector_method_has_probability: .. rst-class:: classref-method bool **has_probability** **(** int child_idx **)** |const| Returns whether the child task at index ``child_idx`` participates within the weighted probability selection algorithm and has a probability assigned to it. Returns ``false`` for :ref:`BTComment` tasks. .. rst-class:: classref-item-separator ---- .. _class_BTProbabilitySelector_method_set_probability: .. rst-class:: classref-method void **set_probability** **(** int child_idx, float probability **)** Sets the child task's weight calculated based on the desired probability. .. rst-class:: classref-item-separator ---- .. _class_BTProbabilitySelector_method_set_weight: .. rst-class:: classref-method void **set_weight** **(** int child_idx, float weight **)** Sets the child task's weight for the weighted probability selection algorithm. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`