import static java.lang.Math.cos;
import static java.lang.Math.sin;
-public class Avatar implements ViewUpdateListener {
+public class Avatar implements ViewRenderListener {
public static final double SPEED_LIMIT = 30;
/**
* Just in case we want to adjust global speed for some reason.
*/
private static final double SPEED_MULTIPLIER = .02d;
+ /**
+ * Determines amount of friction user experiences every millisecond while moving around in space.
+ */
+ private static final double MILLISECOND_FRICTION = 1.005;
/**
* Avatar movement speed, relative to avatar itself. When avatar coordinates
* are updated within the world, avatar orientation relative to the world is
* Avatar location within the 3D world.
*/
private Point3D location = new Point3D();
-
/**
* Avatar orientation on the X-Z plane. It changes when turning left or
* right.
*/
private double orientationXZ;
-
/**
* Avatar orientation on the Y-Z plane. It changes when looking up or down.
*/
private double orientationYZ;
- /**
- * Determines amount of friction user experiences every millisecond while moving around in space.
- */
- private static final double MILLISECOND_FRICTION = 1.005;
-
public Avatar() {
}
}
@Override
- public boolean beforeViewUpdate(final ViewContext viewContext, final int millisecondsSinceLastFrame) {
+ public boolean beforeRender(final ViewPanel viewPanel, final int millisecondsSinceLastFrame) {
final Point3D locationBeforeUpdate = new Point3D(location);
translateAvatarLocation(millisecondsSinceLastFrame);
}
public void enforceSpeedLimit() {
- final double currentSpeed = movementVector
- .getDistanceTo(Point3D.ZERO);
+ final double currentSpeed = movementVector.getVectorLength();
if (currentSpeed <= SPEED_LIMIT)
return;
}
public double getMovementSpeed() {
- return movementVector.getDistanceTo(Point3D.ZERO);
+ return movementVector.getVectorLength();
}
private void applyFrictionToUserMovement(int millisecondsPassedSinceLastFrame) {