Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package base;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.util.vector.Matrix4f;
- import org.lwjgl.util.vector.Vector3f;
- import base.*;
- public class Camera {
- Vector3f xAxis, yAxis, zAxis, newPos, currPos;
- float moveSpeed = 0.1f;
- boolean moveForw, moveBack, moveLeft, moveRight;
- public Camera(Vector3f position, Vector3f target, Vector3f up){
- Matrices.viewMatrix = new Matrix4f();
- Matrix4f.setIdentity(Matrices.viewMatrix);
- //Initialize all vectors
- this.xAxis = new Vector3f();
- this.yAxis = new Vector3f();
- this.zAxis = new Vector3f();
- this.newPos = new Vector3f();
- this.currPos = new Vector3f();
- //Set all values to the Camera-class values
- position.negate(this.currPos);
- target.normalise(this.zAxis);
- up.normalise(this.yAxis);
- Vector3f.cross(target, up, xAxis);
- Vector3f.cross(xAxis, target, yAxis); //Recalulate yAxis to make it valid coordinate system.
- /*
- * This defines the View Matrix. This is calculated and explained here:
- * http://ogldev.atspace.co.uk/www/tutorial13/tutorial13.html
- *
- * m(Column)(Row)
- */
- Matrices.viewMatrix.m00 = xAxis.x; Matrices.viewMatrix.m10 = xAxis.y; Matrices.viewMatrix.m20 = xAxis.z;
- Matrices.viewMatrix.m01 = yAxis.x; Matrices.viewMatrix.m11 = yAxis.y; Matrices.viewMatrix.m21 = yAxis.z;
- Matrices.viewMatrix.m02 = zAxis.x; Matrices.viewMatrix.m12 = zAxis.y; Matrices.viewMatrix.m22 = zAxis.z;
- Matrices.viewMatrix.m33 = 1;
- Matrices.viewMatrix.translate(this.currPos);
- }
- public void cameraLogic(){
- Vector3f.add(this.currPos, this.newPos, this.currPos); //Update current position
- System.out.println(this.currPos);
- this.newPos.set(0, 0, 0);
- //Move Forward
- moveForw = (Keyboard.isKeyDown(Keyboard.KEY_W) ? true : false);
- //Move Left
- moveLeft = (Keyboard.isKeyDown(Keyboard.KEY_A) ? true : false);
- //Move Back
- moveBack = (Keyboard.isKeyDown(Keyboard.KEY_S) ? true : false);
- //Move Left
- moveRight = (Keyboard.isKeyDown(Keyboard.KEY_D) ? true : false);
- if(moveForw){
- zAxis.normalise();
- zAxis.scale(this.moveSpeed);
- Vector3f.sub(this.newPos, this.zAxis, this.newPos);
- }
- if(moveLeft){
- xAxis.normalise();
- xAxis.scale(this.moveSpeed);
- Vector3f.add(this.newPos, this.xAxis, this.newPos);
- }
- if(moveBack){
- zAxis.normalise();
- zAxis.scale(this.moveSpeed);
- Vector3f.add(this.zAxis, this.newPos, this.newPos);
- }
- if(moveRight){
- xAxis.normalise();
- xAxis.scale(this.moveSpeed);
- Vector3f.sub(this.newPos, this.xAxis, this.newPos);
- }
- if(moveForw || moveLeft || moveBack || moveRight)
- Matrices.viewMatrix.translate(this.newPos);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement