import Vector from '../math/Vector';
import Location from '../utils/Location';
import Limiter from './Limiter';
/**
* A {@code Steerable} is a {@link Location} that gives access to the character's data required by steering system.
*
* Notice that there is nothing to connect the direction that a Steerable is moving and the direction it is facing. For
* instance, a character can be oriented along the x-axis but be traveling directly along the y-axis.
*
* @param Type of vector, either 2D or 3D, implementing the {@link Vector} interface
*
* @author davebaol
*/
interface Steerable> extends Location, Limiter {
/** Returns the vector indicating the linear velocity of this Steerable. */
getLinearVelocity(): T;
/** Returns the float value indicating the the angular velocity in radians of this Steerable. */
getAngularVelocity(): number;
/** Returns the bounding radius of this Steerable. */
getBoundingRadius(): number;
/** Returns {@code true} if this Steerable is tagged; {@code false} otherwise. */
isTagged(): boolean;
/**
* Tag/untag this Steerable. This is a generic flag utilized in a variety of ways.
* @param tagged the boolean value to set
*/
setTagged(tagged: boolean): void;
}
export default Steerable;