<?xml version="1.0" encoding="UTF-8" ?>
<class name="GSAISpecializedAgent" inherits="GSAISteeringAgent" version="4.2">
	<brief_description>
		A base class for a specialized steering agent that updates itself every frame so the user does not have to. All other specialized agents derive from this.
	</brief_description>
	<description>
		A base class for a specialized steering agent that updates itself every frame so the user does not have to. All other specialized agents derive from this.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="_apply_steering" qualifiers="virtual">
			<return type="void" />
			<argument index="0" name="acceleration" type="GSAITargetAcceleration" />
			<argument index="1" name="delta" type="float" />
			<description>
				Moves the agent's body by target acceleration.
			</description>
		</method>
		<method name="apply_steering">
			<return type="void" />
			<argument index="0" name="acceleration" type="GSAITargetAcceleration" />
			<argument index="1" name="delta" type="float" />
			<description>
				Moves the agent's body by target acceleration.
			</description>
		</method>
	</methods>
	<members>
		<member name="angular_drag_percentage" type="float" setter="set_angular_drag_percentage" getter="get_angular_drag_percentage" default="0.0">
			The percentage between the current angular velocity and 0 to interpolate by if apply_angular_drag is true. Does not apply to RigidBody and RigidBody2D nodes.
		</member>
		<member name="applied_steering" type="bool" setter="set_applied_steering" getter="get_applied_steering" default="false">
		</member>
		<member name="apply_angular_drag" type="bool" setter="set_apply_angular_drag" getter="get_apply_angular_drag" default="true">
			If true, interpolates the current angular velocity towards 0 by the angular_drag_percentage value. Does not apply to RigidBody and RigidBody2D nodes.
		</member>
		<member name="apply_linear_drag" type="bool" setter="set_apply_linear_drag" getter="get_apply_linear_drag" default="true">
			If true, interpolates the current linear velocity towards 0 by the linear_drag_percentage value. Does not apply to RigidBody and RigidBody2D nodes.
		</member>
		<member name="calculate_velocities" type="bool" setter="set_calculate_velocities" getter="get_calculate_velocities" default="true">
			If true, calculates linear and angular velocities based on the previous frame. When false, the user must keep those values updated.
		</member>
		<member name="last_orientation" type="float" setter="set_last_orientation" getter="get_last_orientation" default="0.0">
		</member>
		<member name="linear_drag_percentage" type="float" setter="set_linear_drag_percentage" getter="get_linear_drag_percentage" default="0.0">
			The percentage between the current linear velocity and 0 to interpolate by if apply_linear_drag is true. Does not apply to RigidBody and RigidBody2D nodes.
		</member>
	</members>
	<constants>
	</constants>
</class>