- public void updateLocation(final int millisecondsPassedSinceLastFrame) {
-
- // translate user coordinates based on avatar movement speed, and avatar
- // orientation in the world
- {
- location.x -= (float) Math.sin(getAngleXZ())
- * getMovementDirection().z * SPEED_MULTIPLIER
- * millisecondsPassedSinceLastFrame;
- location.z += (float) Math.cos(getAngleXZ())
- * getMovementDirection().z * SPEED_MULTIPLIER
- * millisecondsPassedSinceLastFrame;
-
- location.x += (float) Math.cos(getAngleXZ())
- * getMovementDirection().x * SPEED_MULTIPLIER
- * millisecondsPassedSinceLastFrame;
- location.z += (float) Math.sin(getAngleXZ())
- * getMovementDirection().x * SPEED_MULTIPLIER
- * millisecondsPassedSinceLastFrame;
-
- location.y += getMovementDirection().y * SPEED_MULTIPLIER
- * millisecondsPassedSinceLastFrame;
- }
-
- final double millisecondFriction = 1.005;
- // apply friction to progressively slow movement
- for (int i = 0; i < millisecondsPassedSinceLastFrame; i++) {
- getMovementDirection().x = getMovementDirection().x
- / millisecondFriction;
- getMovementDirection().y = getMovementDirection().y
- / millisecondFriction;
- getMovementDirection().z = getMovementDirection().z
- / millisecondFriction;
- }
+ private void translateAvatarLocationBasedOnMovementVector(int millisecondsPassedSinceLastFrame) {
+ location.x -= (float) sin(getAngleXZ())
+ * getMovementVector().z * SPEED_MULTIPLIER
+ * millisecondsPassedSinceLastFrame;
+ location.z += (float) cos(getAngleXZ())
+ * getMovementVector().z * SPEED_MULTIPLIER
+ * millisecondsPassedSinceLastFrame;
+
+ location.x += (float) cos(getAngleXZ())
+ * getMovementVector().x * SPEED_MULTIPLIER
+ * millisecondsPassedSinceLastFrame;
+ location.z += (float) sin(getAngleXZ())
+ * getMovementVector().x * SPEED_MULTIPLIER
+ * millisecondsPassedSinceLastFrame;
+
+ location.y += getMovementVector().y * SPEED_MULTIPLIER
+ * millisecondsPassedSinceLastFrame;