Add addons
This commit is contained in:
parent
2c862b2235
commit
3367bad24f
527 changed files with 36197 additions and 0 deletions
54
Sprout/addons/beehave/nodes/composites/selector_random.gd
Normal file
54
Sprout/addons/beehave/nodes/composites/selector_random.gd
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
## This node will attempt to execute all of its children just like a
|
||||
## [code]SelectorStar[/code] would, with the exception that the children
|
||||
## will be executed in a random order.
|
||||
@tool
|
||||
class_name SelectorRandomComposite extends Composite
|
||||
@icon("../../icons/selector_random.svg")
|
||||
|
||||
|
||||
## A shuffled list of the children that will be executed in reverse order.
|
||||
var _children_bag: Array[Node] = []
|
||||
var c: Node
|
||||
|
||||
|
||||
func tick(actor: Node, blackboard: Blackboard) -> int:
|
||||
if _children_bag.is_empty():
|
||||
_reset()
|
||||
|
||||
# We need to traverse the array in reverse since we will be manipulating it.
|
||||
for i in _get_reversed_indexes():
|
||||
c = _children_bag[i]
|
||||
var response = c.tick(actor, blackboard)
|
||||
|
||||
if c is ConditionLeaf:
|
||||
blackboard.set_value("last_condition", c)
|
||||
blackboard.set_value("last_condition_status", response)
|
||||
|
||||
if response == RUNNING:
|
||||
running_child = c
|
||||
else:
|
||||
_children_bag.erase(c)
|
||||
|
||||
if response != FAILURE:
|
||||
if response == SUCCESS:
|
||||
_reset()
|
||||
return response
|
||||
|
||||
return FAILURE
|
||||
|
||||
|
||||
func interrupt(actor: Node, blackboard: Blackboard) -> void:
|
||||
_reset()
|
||||
super(actor, blackboard)
|
||||
|
||||
|
||||
func _get_reversed_indexes() -> Array[int]:
|
||||
var reversed = range(_children_bag.size())
|
||||
reversed.reverse()
|
||||
return reversed
|
||||
|
||||
|
||||
## Generates a new shuffled list of the children.
|
||||
func _reset() -> void:
|
||||
_children_bag = get_children().duplicate()
|
||||
_children_bag.shuffle()
|
||||
Loading…
Add table
Add a link
Reference in a new issue