1 package SteeringStuff;
2
3 import SteeringProperties.SteeringProperties;
4 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
5 import javax.vecmath.Vector3d;
6
7
8 /**
9 * An interface for all steerings.
10 * @author Marki
11 */
12 public interface ISteering {
13
14 /**
15 * The steering manager calls steering to compute the force of the steering in that tick (logic).
16 * @param scaledActualVelocity This is the force of the last velocity, scaled by its weight. The steering can use this vector to create the decelerating force.
17 * @param wantsToGoFaster The steering should set this ref parameter, whether is possible to enlarge the velocity (wantsToGoFaster=true), or not.
18 * @param wantsToStop If steering want's to stop the agent, he can set this ref parameter to true.
19 * @param focus If the wantsToStop is true, steering can set the focus Location, which means the orientation of the stopped agent. (Agent will rotate to this location.)
20 * @return The computed steering force.
21 */
22 public Vector3d run(Vector3d scaledActualVelocity, RefBoolean wantsToGoFaster, RefBoolean wantsToStop, Location focus);
23
24 /**
25 * The steering manager will set to the steering his steering properties. That could be set also many times.
26 * @param newProperties the new steering properties
27 */
28 public void setProperties(SteeringProperties newProperties);
29 }