class BehaviorTree::Decorators::Condition

Applies a condition that will decide whether to tick the decorated node or not.

Attributes

context[R]

Public Class Methods

new(child, procedure = nil, &block) click to toggle source
Calls superclass method
# File lib/behavior_tree/decorator_nodes/condition.rb, line 11
def initialize(child, procedure = nil, &block)
  validate_proc!(procedure, block)

  super(child)

  @conditional_block = block_given? ? block : procedure
end

Protected Instance Methods

should_tick?() click to toggle source
# File lib/behavior_tree/decorator_nodes/condition.rb, line 21
def should_tick?
  return false unless @conditional_block.is_a?(Proc)

  if @conditional_block.lambda?
    args = [@context, self].take @conditional_block.arity
    @conditional_block.(*args)
  else
    instance_eval(&@conditional_block)
  end
end
status_map() click to toggle source
# File lib/behavior_tree/decorator_nodes/condition.rb, line 32
def status_map
  if @tick_prevented
    status.failure!
  else
    self.status = child.status
  end
end