public class Camera
{
private Player player;
private float horizontalDistanceFromPlayer;
private float verticalDistanceFromPlayer;
private Vector3 eye;
private Vector3 center;
private Vector3 up;
private float[] viewMatrix;
private float[] rotationMatrix;
private float[] translationMatrix;
public Camera(Player player)
{
this.player = player;
horizontalDistanceFromPlayer = 1.25f;
verticalDistanceFromPlayer = 0.75f;
up = new Vector3(0, 1, 0);
center = player.getWorldMidPoint();
center.y += player.getPlayerRadius().y * 2;
eye = new Vector3(center.x, center.y + verticalDistanceFromPlayer, center.z + horizontalDistanceFromPlayer);
viewMatrix = new float[16];
rotationMatrix = new float[16];
translationMatrix = new float[16];
}
public float[] getViewMatrix()
{
Matrix.setLookAtM(viewMatrix, 0, eye.x, eye.y, eye.z, center.x, center.y, center.z, up.x, up.y, up.z);
return viewMatrix;
}
public void updateCamera()
{
center = player.getWorldMidPoint();
center.y += player.getPlayerRadius().y * 2;
float angle = -player.getIncrementalRotationAngle();
float c = (float)Math.cos(Math.toRadians(angle));
float s = (float)Math.sin(Math.toRadians(angle));
eye.x = center.x + (s*horizontalDistanceFromPlayer);
eye.y = center.y + verticalDistanceFromPlayer;
eye.z = center.z + (c*horizontalDistanceFromPlayer);
if(player.getPlayerRunningStatus())
{
eye.addVector(player.getPlayerTimeBasedVelocity());
}
}
public Vector3 getCameraEyeVector()
{
return new Vector3(eye.x, eye.y, eye.z);
}
}
Comments