godot-steering-ai-framework/addons/com.gdquest.godot-steering-ai-framework/GSAISteeringBehavior.gd
2020-05-14 13:45:46 -04:00

31 lines
944 B
GDScript

# Base class for all steering behaviors.
#
# Steering behaviors calculate the linear and the angular acceleration to be
# to the agent that owns them.
#
# The `calculate_steering` function is the entry point for all behaviors.
# Individual steering behaviors encapsulate the steering logic.
# @category - Base types
class_name GSAISteeringBehavior
# If `false`, all calculations return zero amounts of acceleration.
var is_enabled := true
# The AI agent on which the steering behavior bases its calculations.
var agent: GSAISteeringAgent
func _init(_agent: GSAISteeringAgent) -> void:
self.agent = _agent
# Sets the `acceleration` with the behavior's desired amount of acceleration.
func calculate_steering(acceleration: GSAITargetAcceleration) -> void:
if is_enabled:
_calculate_steering(acceleration)
else:
acceleration.set_zero()
func _calculate_steering(acceleration: GSAITargetAcceleration) -> void:
acceleration.set_zero()