import Vector from '../../math/Vector';
import { ProximityCallback } from '../Proximity';
import Steerable from '../Steerable';
import ProximityBase from './ProximityBase';
/**
* A {@code RadiusProximity} elaborates any agents contained in the specified list that are within the radius of the owner.
*
* Note that this implementation checks the AI time of the current frame through the {@link Timepiece#getTime()
* GdxAI.getTimepiece().getTime()} method in order to calculate neighbors only once per frame (assuming delta time is always
* greater than 0, if time has changed the frame has changed too). This means that
*
* - if you forget to {@link Timepiece#update(float) update the timepiece} on each frame the proximity instance will be
* calculated only the very first time, which is not what you want of course.
* - ideally the timepiece should be updated before the proximity is updated by the {@link #findNeighbors(ProximityCallback)}
* method.
*
*
* @param Type of vector, either 2D or 3D, implementing the {@link Vector} interface
*
* @author davebaol
*/
declare class RadiusProximity> extends ProximityBase {
/** The radius of this proximity. */
protected radius: number;
private lastTime;
private getTickId;
/**
* Creates a {@code RadiusProximity} for the specified owner, agents and radius.
* @param owner the owner of this proximity
* @param agents the agents
* @param radius the radius of the cone area
*/
constructor(owner: Steerable, agents: Steerable[], radius: number, getTickId: () => number);
/** Returns the radius of this proximity. */
getRadius(): number;
/** Sets the radius of this proximity. */
setRadius(radius: number): void;
findNeighbors(callback: ProximityCallback): number;
}
export default RadiusProximity;