Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package thmedia.cross.state.world;
- import javax.vecmath.AxisAngle4f;
- import javax.vecmath.Matrix4f;
- import javax.vecmath.Quat4f;
- import javax.vecmath.Tuple3f;
- import javax.vecmath.Vector3f;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.input.Mouse;
- import thmedia.cross.state.world.dynamics.ProjectionTransformComponent;
- import thmedia.cross.state.world.dynamics.TransformComponent;
- import thmedia.cross.state.world.dynamics.ViewTransformComponent;
- import ecumene.geom.Projection;
- import ecumene.opengl.Window;
- public class WorldCamera extends WorldObject {
- private ProjectionTransformComponent projectionComponent;
- private TransformComponent viewComponent;
- private static float SPEED = 0.019f;
- private boolean grabbedMouse = true;
- private Vector3f const_position;
- private Vector3f const_rotation;
- public WorldCamera(WorldContext world) {
- super(world);
- const_position = new Vector3f(0, 10, 0);
- const_rotation = new Vector3f(0, 0, 0);
- projectionComponent = new ProjectionTransformComponent(this, Projection.createPerspective(40, (float) Window.getWidth() / Window.getHeight(), 0.001f, 1000));
- viewComponent = new ViewTransformComponent(this);
- }
- @Override
- public void init() throws Throwable {
- super.init();
- addComponent(projectionComponent);
- addComponent(viewComponent);
- }
- @Override
- public void update(float dt) throws Throwable {
- super.update(dt);
- float frameSpeed = SPEED * dt;
- if(Mouse.isGrabbed()){
- float mouseDX = Mouse.getDX() * 0.005f;
- float mouseDY = Mouse.getDY() * 0.005f;
- const_rotation.x += -mouseDX;
- const_rotation.y += mouseDY;
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_W)){
- const_position.x += (float) (Math.sin(-const_rotation.y - 180 * Math.PI / 180) * frameSpeed);
- const_position.z += (float) (Math.cos(-const_rotation.y - 180 * Math.PI / 180) * frameSpeed);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_S)){
- const_position.x -= (float) (Math.sin(-const_rotation.y + 180 * Math.PI / 180) * frameSpeed);
- const_position.z -= (float) (Math.cos(-const_rotation.y + 180 * Math.PI / 180) * frameSpeed);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_A)){
- const_position.x += (float) (Math.sin(-const_rotation.y - 90 * Math.PI / 180) * frameSpeed);
- const_position.z += (float) (Math.cos(-const_rotation.y - 90 * Math.PI / 180) * frameSpeed);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_D)){
- const_position.x += (float) (Math.sin(-const_rotation.y + 90 * Math.PI / 180) * frameSpeed);
- const_position.z += (float) (Math.cos(-const_rotation.y + 90 * Math.PI / 180) * frameSpeed);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_SPACE)){
- const_position.y += SPEED * dt;
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){
- const_position.y -= SPEED * dt;
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){
- SPEED = 0.19f;
- } else {
- SPEED = 0.019f;
- }
- Matrix4f view = new Matrix4f();
- view.setIdentity();
- Matrix4f rotX = new Matrix4f();
- Matrix4f rotY = new Matrix4f();
- Matrix4f tran = new Matrix4f();
- {
- rotX.setIdentity();
- rotX.rotX(const_rotation.y);
- rotY.setIdentity();
- rotY.rotY(const_rotation.x);
- Vector3f translation = new Vector3f(const_position);
- tran.setIdentity();
- tran.setTranslation(translation);
- // view.mul(tran);
- view.mul(rotY);
- view.mul(rotX);
- view.setTranslation(const_position);
- }
- viewComponent.setTransform(view);
- System.out.println(view);
- while(Keyboard.next())
- if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) grabbedMouse = !grabbedMouse;
- Mouse.setGrabbed(grabbedMouse);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement