Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. package thmedia.cross.state.world;
  2.  
  3. import javax.vecmath.AxisAngle4f;
  4. import javax.vecmath.Matrix4f;
  5. import javax.vecmath.Quat4f;
  6. import javax.vecmath.Tuple3f;
  7. import javax.vecmath.Vector3f;
  8.  
  9. import org.lwjgl.input.Keyboard;
  10. import org.lwjgl.input.Mouse;
  11.  
  12. import thmedia.cross.state.world.dynamics.ProjectionTransformComponent;
  13. import thmedia.cross.state.world.dynamics.TransformComponent;
  14. import thmedia.cross.state.world.dynamics.ViewTransformComponent;
  15. import ecumene.geom.Projection;
  16. import ecumene.opengl.Window;
  17.  
  18. public class WorldCamera extends WorldObject {
  19.  
  20. private ProjectionTransformComponent projectionComponent;
  21. private TransformComponent viewComponent;
  22.  
  23. private static float SPEED = 0.019f;
  24. private boolean grabbedMouse = true;
  25.  
  26. private Vector3f const_position;
  27. private Vector3f const_rotation;
  28.  
  29. public WorldCamera(WorldContext world) {
  30. super(world);
  31.  
  32. const_position = new Vector3f(0, 10, 0);
  33. const_rotation = new Vector3f(0, 0, 0);
  34.  
  35. projectionComponent = new ProjectionTransformComponent(this, Projection.createPerspective(40, (float) Window.getWidth() / Window.getHeight(), 0.001f, 1000));
  36. viewComponent = new ViewTransformComponent(this);
  37. }
  38.  
  39. @Override
  40. public void init() throws Throwable {
  41. super.init();
  42.  
  43. addComponent(projectionComponent);
  44. addComponent(viewComponent);
  45. }
  46.  
  47. @Override
  48. public void update(float dt) throws Throwable {
  49. super.update(dt);
  50.  
  51. float frameSpeed = SPEED * dt;
  52.  
  53. if(Mouse.isGrabbed()){
  54. float mouseDX = Mouse.getDX() * 0.005f;
  55. float mouseDY = Mouse.getDY() * 0.005f;
  56.  
  57. const_rotation.x += -mouseDX;
  58. const_rotation.y += mouseDY;
  59. }
  60.  
  61. if(Keyboard.isKeyDown(Keyboard.KEY_W)){
  62. const_position.x += (float) (Math.sin(-const_rotation.y - 180 * Math.PI / 180) * frameSpeed);
  63. const_position.z += (float) (Math.cos(-const_rotation.y - 180 * Math.PI / 180) * frameSpeed);
  64. }
  65. if(Keyboard.isKeyDown(Keyboard.KEY_S)){
  66. const_position.x -= (float) (Math.sin(-const_rotation.y + 180 * Math.PI / 180) * frameSpeed);
  67. const_position.z -= (float) (Math.cos(-const_rotation.y + 180 * Math.PI / 180) * frameSpeed);
  68. }
  69.  
  70. if(Keyboard.isKeyDown(Keyboard.KEY_A)){
  71. const_position.x += (float) (Math.sin(-const_rotation.y - 90 * Math.PI / 180) * frameSpeed);
  72. const_position.z += (float) (Math.cos(-const_rotation.y - 90 * Math.PI / 180) * frameSpeed);
  73. }
  74. if(Keyboard.isKeyDown(Keyboard.KEY_D)){
  75. const_position.x += (float) (Math.sin(-const_rotation.y + 90 * Math.PI / 180) * frameSpeed);
  76. const_position.z += (float) (Math.cos(-const_rotation.y + 90 * Math.PI / 180) * frameSpeed);
  77. }
  78.  
  79. if(Keyboard.isKeyDown(Keyboard.KEY_SPACE)){
  80. const_position.y += SPEED * dt;
  81. }
  82.  
  83. if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){
  84. const_position.y -= SPEED * dt;
  85. }
  86.  
  87. if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){
  88. SPEED = 0.19f;
  89. } else {
  90. SPEED = 0.019f;
  91. }
  92.  
  93. Matrix4f view = new Matrix4f();
  94. view.setIdentity();
  95.  
  96. Matrix4f rotX = new Matrix4f();
  97. Matrix4f rotY = new Matrix4f();
  98. Matrix4f tran = new Matrix4f();
  99.  
  100. {
  101. rotX.setIdentity();
  102. rotX.rotX(const_rotation.y);
  103. rotY.setIdentity();
  104. rotY.rotY(const_rotation.x);
  105. Vector3f translation = new Vector3f(const_position);
  106.  
  107. tran.setIdentity();
  108. tran.setTranslation(translation);
  109.  
  110. // view.mul(tran);
  111. view.mul(rotY);
  112. view.mul(rotX);
  113.  
  114. view.setTranslation(const_position);
  115. }
  116.  
  117. viewComponent.setTransform(view);
  118.  
  119. System.out.println(view);
  120.  
  121. while(Keyboard.next())
  122. if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) grabbedMouse = !grabbedMouse;
  123.  
  124. Mouse.setGrabbed(grabbedMouse);
  125. }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement