Client.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #include "Client.h"
  2. #include <iostream>
  3. using namespace std;
  4. Client::Client()
  5. {
  6. position.set(0, 0, -2);
  7. shader.setCamera(position.getX(), position.getY(), position.getZ(), 0, 0);
  8. shader.storeCamera();
  9. keyManager.map(KEY_LEFT, GLFW_KEY_A);
  10. keyManager.map(KEY_RIGHT, GLFW_KEY_D);
  11. keyManager.map(KEY_UP, GLFW_KEY_W);
  12. keyManager.map(KEY_DOWN, GLFW_KEY_S);
  13. keyManager.map(KEY_JUMP, GLFW_KEY_SPACE);
  14. keyManager.map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT);
  15. keyManager.map(KEY_CAM_LEFT, GLFW_KEY_H);
  16. keyManager.map(KEY_CAM_RIGHT, GLFW_KEY_K);
  17. keyManager.map(KEY_CAM_UP, GLFW_KEY_U);
  18. keyManager.map(KEY_CAM_DOWN, GLFW_KEY_J);
  19. keyManager.map(KEY_CAM_TEST, GLFW_KEY_T);
  20. mouseManager.map(MOUSE_LEFT, GLFW_MOUSE_BUTTON_1);
  21. }
  22. Client::~Client()
  23. {
  24. }
  25. float oldTicker = 0;
  26. float ticker = 0;
  27. void Client::tick()
  28. {
  29. tps.update();
  30. oldTicker = ticker;
  31. ticker += 1;
  32. if(ticker >= 360)
  33. {
  34. oldTicker = 0;
  35. ticker = 0;
  36. }
  37. if(keyManager.isDown(KEY_CAM_TEST))
  38. {
  39. Engine::setLineMode(true);
  40. }
  41. else
  42. {
  43. Engine::setLineMode(false);
  44. }
  45. shader.storeCamera();
  46. float factor = 2.0f;
  47. if(keyManager.isDown(KEY_LEFT))
  48. {
  49. position.addMul(shader.getLeft(), factor);
  50. }
  51. if(keyManager.isDown(KEY_RIGHT))
  52. {
  53. position.addMul(shader.getRight(), factor);
  54. }
  55. if(keyManager.isDown(KEY_UP))
  56. {
  57. position.addMul(shader.getFront(), factor);
  58. }
  59. if(keyManager.isDown(KEY_DOWN))
  60. {
  61. position.addMul(shader.getBack(), factor);
  62. }
  63. if(keyManager.isDown(KEY_JUMP))
  64. {
  65. position.addMul(shader.getUp(), factor);
  66. }
  67. if(keyManager.isDown(KEY_SNEAK))
  68. {
  69. position.addMul(shader.getDown(), factor);
  70. }
  71. if(keyManager.isDown(KEY_CAM_LEFT))
  72. {
  73. lengthAngle += 2;
  74. }
  75. if(keyManager.isDown(KEY_CAM_RIGHT))
  76. {
  77. lengthAngle -= 2;
  78. }
  79. if(keyManager.isDown(KEY_CAM_UP) && widthAngle < 88)
  80. {
  81. widthAngle += 2;
  82. }
  83. if(keyManager.isDown(KEY_CAM_DOWN) && widthAngle > -88)
  84. {
  85. widthAngle -= 2;
  86. }
  87. shader.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle);
  88. mouseManager.tick();
  89. keyManager.tick();
  90. }
  91. void Client::renderTick(float lag)
  92. {
  93. fps.update();
  94. shader.set3DMode(lag);
  95. shader.setToIdentity();
  96. shader.updateModelMatrix();
  97. shader.setColorEnabled(true);
  98. shader.setTextureEnabled(false);
  99. shader.setUseBlending(false);
  100. shader.setNormalsEnabled(true);
  101. world.renderTick(shader, directRenderer, lag);
  102. shader.set2DMode();
  103. shader.setToIdentity();
  104. shader.updateModelMatrix();
  105. shader.setTextMode();
  106. string wusi;
  107. wusi = "FPS: " + to_string(fps.getUpdatesPerSecond());
  108. directRenderer.drawString(10, 10, true, wusi);
  109. }
  110. void Client::onKeyEvent(int key, int scancode, int action, int mods)
  111. {
  112. if(action == GLFW_PRESS)
  113. {
  114. keyManager.press(key);
  115. }
  116. else if(action == GLFW_RELEASE)
  117. {
  118. keyManager.release(key);
  119. }
  120. }
  121. void Client::onMouseClick(int button, int action, int mods)
  122. {
  123. if(action == GLFW_PRESS)
  124. {
  125. mouseManager.press(button);
  126. }
  127. else if(action == GLFW_RELEASE)
  128. {
  129. mouseManager.release(button);
  130. }
  131. }