fixing update cameras
This commit is contained in:
parent
68720e1d1f
commit
11f3160846
|
@ -21,9 +21,9 @@ public class Test implements Game {
|
||||||
public Renderer renderer;
|
public Renderer renderer;
|
||||||
public Shader shader;
|
public Shader shader;
|
||||||
|
|
||||||
public Mesh dragon = ModelLoader.loadModel("resources/models/dragon.obj", "resources/textures/b.png");
|
public boolean lockToggle = false;
|
||||||
|
|
||||||
public Mesh cube = new Mesh(new Vertex[] {
|
public GameObject cubeObject = new GameObject(new Mesh(new Vertex[] {
|
||||||
//Back face
|
//Back face
|
||||||
new Vertex(new Vector3f(-0.5f, 0.5f, -0.5f), new Vector2f(0.0f, 0.0f)),
|
new Vertex(new Vector3f(-0.5f, 0.5f, -0.5f), new Vector2f(0.0f, 0.0f)),
|
||||||
new Vertex(new Vector3f(-0.5f, -0.5f, -0.5f), new Vector2f(0.0f, 1.0f)),
|
new Vertex(new Vector3f(-0.5f, -0.5f, -0.5f), new Vector2f(0.0f, 1.0f)),
|
||||||
|
@ -83,19 +83,15 @@ public class Test implements Game {
|
||||||
//Bottom face
|
//Bottom face
|
||||||
20, 21, 23,
|
20, 21, 23,
|
||||||
23, 21, 22
|
23, 21, 22
|
||||||
}, new Material(new Texture("resources/textures/b.png")), "texture");
|
}, new Material(new Texture("resources/textures/b.png")), "texture"), new Vector3f(0, 0, 0 ), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
||||||
|
|
||||||
public boolean lockToggle = false;
|
|
||||||
|
|
||||||
public GameObject cubeObject = new GameObject(cube, new Vector3f(0, 0, 0 ), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
|
||||||
|
|
||||||
public GameObject planeObject = new GameObject("resources/objects/plane.mesh", new Vector3f(0, 0, 0 ), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
public GameObject planeObject = new GameObject("resources/objects/plane.mesh", new Vector3f(0, 0, 0 ), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
||||||
|
|
||||||
public GameObject dragonObject = new GameObject(dragon, new Vector3f(0, 0, 0), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
public GameObject dragonObject = new GameObject("resources/models/dragon.obj", "resources/textures/b.png", new Vector3f(0, 0, 0), new Vector3f(0, 0, 0), new Vector3f(1, 1, 1));
|
||||||
|
|
||||||
// public ThirdPersonCamera camera = new ThirdPersonCamera(new Vector3f(0, 0, 5), new Vector3f(0, 0, 0), cubeObject, 0.5f, 5, 0.1f, 20f, false, true, true);
|
public ThirdPersonCamera camera = new ThirdPersonCamera(new Vector3f(0, 0, 5), new Vector3f(0, 0, 0), cubeObject, 0.5f, 5, 0.1f, 12f, true, true, true);
|
||||||
|
|
||||||
public FirstPersonCamera camera = new FirstPersonCamera(new Vector3f(0, 0, 5), new Vector3f(0, 0, 0), 0.5f, 0.15f);
|
// public FirstPersonCamera camera = new FirstPersonCamera(new Vector3f(0, 0, 5), new Vector3f(0, 0, 0), 0.1f, 0.15f);
|
||||||
|
|
||||||
public Test() throws Exception {
|
public Test() throws Exception {
|
||||||
}
|
}
|
||||||
|
@ -118,7 +114,7 @@ public class Test implements Game {
|
||||||
int frames = display.update();
|
int frames = display.update();
|
||||||
display.setWindowName(display.getWindowName().substring(0, 4) + " (Frames : " + frames + ")");
|
display.setWindowName(display.getWindowName().substring(0, 4) + " (Frames : " + frames + ")");
|
||||||
if (display.isLocked()) {
|
if (display.isLocked()) {
|
||||||
camera.update();
|
camera.standardKeybindUpdate();
|
||||||
}
|
}
|
||||||
if (i.buttonPress(GLFW.GLFW_MOUSE_BUTTON_LEFT)) {
|
if (i.buttonPress(GLFW.GLFW_MOUSE_BUTTON_LEFT)) {
|
||||||
if (!lockToggle) {
|
if (!lockToggle) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class FirstPersonCamera extends Camera {
|
||||||
this.i = i;
|
this.i = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update () throws Exception {
|
public void standardKeybindUpdate () throws Exception {
|
||||||
|
|
||||||
newMouseX = i.getMouseX();
|
newMouseX = i.getMouseX();
|
||||||
newMouseY = i.getMouseY();
|
newMouseY = i.getMouseY();
|
||||||
|
@ -48,13 +48,49 @@ public class FirstPersonCamera extends Camera {
|
||||||
if (i.isKeyDown(GLFW.GLFW_KEY_S)) movePosition(0, 0, moveSpeed);
|
if (i.isKeyDown(GLFW.GLFW_KEY_S)) movePosition(0, 0, moveSpeed);
|
||||||
if (i.isKeyDown(GLFW.GLFW_KEY_SPACE)) movePosition(0, moveSpeed, 0);
|
if (i.isKeyDown(GLFW.GLFW_KEY_SPACE)) movePosition(0, moveSpeed, 0);
|
||||||
if (i.isKeyDown(GLFW.GLFW_KEY_LEFT_SHIFT)) movePosition(0, -moveSpeed, 0);
|
if (i.isKeyDown(GLFW.GLFW_KEY_LEFT_SHIFT)) movePosition(0, -moveSpeed, 0);
|
||||||
if (i.keyPress(GLFW.GLFW_KEY_R)) moveSpeed = 4*moveSpeed;
|
if (i.keyPress(GLFW.GLFW_KEY_R)) moveSpeed = 3*moveSpeed;
|
||||||
if (i.keyReleased(GLFW.GLFW_KEY_R)) moveSpeed = moveSpeed / 4;
|
if (i.keyReleased(GLFW.GLFW_KEY_R)) moveSpeed = moveSpeed / 3;
|
||||||
|
|
||||||
setRotation(cameraRot);
|
setRotation(cameraRot);
|
||||||
setPosition(cameraPos);
|
setPosition(cameraPos);
|
||||||
|
|
||||||
i.reset();
|
i.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moveForward() {
|
||||||
|
movePosition(0, 0, -moveSpeed);
|
||||||
|
}
|
||||||
|
public void moveBackward() {
|
||||||
|
movePosition(0, 0, moveSpeed);
|
||||||
|
}
|
||||||
|
public void moveLeft() {
|
||||||
|
movePosition(-moveSpeed, 0, 0);
|
||||||
|
}
|
||||||
|
public void moveRight() {
|
||||||
|
movePosition(moveSpeed, 0, 0);
|
||||||
|
}
|
||||||
|
public void moveUp() {
|
||||||
|
movePosition(0, moveSpeed, 0);
|
||||||
|
}
|
||||||
|
public void moveDown() {
|
||||||
|
movePosition(0, -moveSpeed, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getMoveSpeed() {
|
||||||
|
return moveSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoveSpeed(float moveSpeed) {
|
||||||
|
this.moveSpeed = moveSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rotateCamera(float dx, float dy) throws Exception {
|
||||||
|
|
||||||
|
Vector3f cameraRot = getRotation();
|
||||||
|
cameraRot = Vector3f.add(cameraRot, new Vector3f(dy*sensitivity, dx*sensitivity, 0));
|
||||||
|
|
||||||
|
|
||||||
|
setRotation(cameraRot);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package org.hl.engine.objects;
|
package org.hl.engine.objects;
|
||||||
|
|
||||||
import org.hl.engine.graphics.Material;
|
import org.hl.engine.graphics.*;
|
||||||
import org.hl.engine.graphics.Mesh;
|
|
||||||
import org.hl.engine.graphics.Texture;
|
|
||||||
import org.hl.engine.graphics.Vertex;
|
|
||||||
import org.hl.engine.math.lalg.Vector2f;
|
import org.hl.engine.math.lalg.Vector2f;
|
||||||
import org.hl.engine.math.lalg.Vector3f;
|
import org.hl.engine.math.lalg.Vector3f;
|
||||||
import org.hl.engine.objects.yloaders.YMesh;
|
import org.hl.engine.objects.yloaders.YMesh;
|
||||||
|
@ -32,10 +29,10 @@ public class GameObject {
|
||||||
Yaml yaml = new Yaml();
|
Yaml yaml = new Yaml();
|
||||||
FileInputStream inputStream = new FileInputStream(meshFileName);
|
FileInputStream inputStream = new FileInputStream(meshFileName);
|
||||||
YMesh yMesh = yaml.loadAs(inputStream, YMesh.class);
|
YMesh yMesh = yaml.loadAs(inputStream, YMesh.class);
|
||||||
Integer[] cull = yMesh.getCull().toArray(new Integer[yMesh.getCull().size()]);
|
Integer[] cull = yMesh.getCull().toArray(new Integer[0]);
|
||||||
String type = yMesh.getType();
|
String type = yMesh.getType();
|
||||||
String texture = yMesh.getTexture();
|
String texture = yMesh.getTexture();
|
||||||
YPoint[] vertices = yMesh.getVertices().toArray(new YPoint[yMesh.getVertices().size()]);
|
YPoint[] vertices = yMesh.getVertices().toArray(new YPoint[0]);
|
||||||
Vertex[] meshFormat = new Vertex[vertices.length];
|
Vertex[] meshFormat = new Vertex[vertices.length];
|
||||||
|
|
||||||
for (YPoint vertex : vertices) {
|
for (YPoint vertex : vertices) {
|
||||||
|
@ -69,6 +66,12 @@ public class GameObject {
|
||||||
this.rotation = rotation;
|
this.rotation = rotation;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public GameObject(String meshFileName, String texturePath, Vector3f position, Vector3f rotation, Vector3f scale) throws Exception {
|
||||||
|
this.mesh = ModelLoader.loadModel(meshFileName, texturePath);
|
||||||
|
this.position = position;
|
||||||
|
this.scale = scale;
|
||||||
|
this.rotation = rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void create() {
|
public void create() {
|
||||||
|
|
|
@ -43,9 +43,7 @@ public class ThirdPersonCamera extends Camera {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void update() throws Exception {
|
public void standardKeybindUpdate() throws Exception {
|
||||||
|
|
||||||
near = 0.1f;
|
|
||||||
|
|
||||||
newMouseX = i.getMouseX();
|
newMouseX = i.getMouseX();
|
||||||
newMouseY = i.getMouseY();
|
newMouseY = i.getMouseY();
|
||||||
|
@ -63,9 +61,13 @@ public class ThirdPersonCamera extends Camera {
|
||||||
if (i.isButtonDown(GLFW.GLFW_MOUSE_BUTTON_RIGHT) && zoomEnabled) {
|
if (i.isButtonDown(GLFW.GLFW_MOUSE_BUTTON_RIGHT) && zoomEnabled) {
|
||||||
if (distance > 0) {
|
if (distance > 0) {
|
||||||
distance += dy * sensitivity;
|
distance += dy * sensitivity;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
distance = near;
|
distance = near;
|
||||||
}
|
}
|
||||||
|
if (distance > far) {
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (clickToMove) {
|
} else if (clickToMove) {
|
||||||
|
|
||||||
|
@ -79,6 +81,9 @@ public class ThirdPersonCamera extends Camera {
|
||||||
} else {
|
} else {
|
||||||
distance = near;
|
distance = near;
|
||||||
}
|
}
|
||||||
|
if (distance > far) {
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (clickToZoom) {
|
} else if (clickToZoom) {
|
||||||
|
@ -92,6 +97,9 @@ public class ThirdPersonCamera extends Camera {
|
||||||
} else {
|
} else {
|
||||||
distance = near;
|
distance = near;
|
||||||
}
|
}
|
||||||
|
if (distance > far) {
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -104,6 +112,9 @@ public class ThirdPersonCamera extends Camera {
|
||||||
} else {
|
} else {
|
||||||
distance = near;
|
distance = near;
|
||||||
}
|
}
|
||||||
|
if (distance > far) {
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -123,6 +134,40 @@ public class ThirdPersonCamera extends Camera {
|
||||||
|
|
||||||
i.reset();
|
i.reset();
|
||||||
|
|
||||||
|
}
|
||||||
|
public void movePosition (float dy, float dx) throws Exception {
|
||||||
|
vertAngle -= dy * sensitivity;
|
||||||
|
horizAngle += dx * sensitivity;
|
||||||
|
|
||||||
|
float horizDistance = (float) (distance * Math.cos(Math.toRadians(vertAngle)));
|
||||||
|
float vertDistance = (float) (distance * Math.sin(Math.toRadians(vertAngle)));
|
||||||
|
|
||||||
|
float xOffset = (float) (horizDistance * Math.sin(Math.toRadians(-horizAngle)));
|
||||||
|
float zOffset = (float) (horizDistance * Math.cos(Math.toRadians(-horizAngle)));
|
||||||
|
|
||||||
|
setPosition(new Vector3f(object.getPosition().getX() + xOffset, object.getPosition().getY() - vertDistance, object.getPosition().getZ() + zOffset));
|
||||||
|
setRotation(new Vector3f(-vertAngle, horizAngle,0));
|
||||||
|
}
|
||||||
|
public void zoom (float dy) throws Exception {
|
||||||
|
if (zoomEnabled) {
|
||||||
|
if (distance > 0) {
|
||||||
|
distance += dy * sensitivity;
|
||||||
|
} else {
|
||||||
|
distance = near;
|
||||||
|
}
|
||||||
|
if (distance > far) {
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float horizDistance = (float) (distance * Math.cos(Math.toRadians(vertAngle)));
|
||||||
|
float vertDistance = (float) (distance * Math.sin(Math.toRadians(vertAngle)));
|
||||||
|
|
||||||
|
float xOffset = (float) (horizDistance * Math.sin(Math.toRadians(-horizAngle)));
|
||||||
|
float zOffset = (float) (horizDistance * Math.cos(Math.toRadians(-horizAngle)));
|
||||||
|
|
||||||
|
setPosition(new Vector3f(object.getPosition().getX() + xOffset, object.getPosition().getY() - vertDistance, object.getPosition().getZ() + zOffset));
|
||||||
|
setRotation(new Vector3f(-vertAngle, horizAngle,0));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue
Block a user