Game.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef GAME_H
  2. #define GAME_H
  3. #include "client/input/Control.h"
  4. #include "client/utils/Clock.h"
  5. #include "client/rendering/RenderSettings.h"
  6. #include "client/rendering/Renderer.h"
  7. #include "client/rendering/Mesh.h"
  8. #include "client/rendering/FileTexture.h"
  9. #include "client/rendering/FontRenderer.h"
  10. #include "common/world/World.h"
  11. #include "common/block/BlockRegistry.h"
  12. #include "rendering/renderer/WorldRenderer.h"
  13. #include "common/utils/KDTree.h"
  14. #include "client/rendering/Lines.h"
  15. class Game final {
  16. public:
  17. Game(const Control& control, const Clock& fps, const Clock& tps, RenderSettings& renderSettings);
  18. void tick();
  19. void renderWorld(float lag, Renderer& renderer) const;
  20. void renderWorldLines(float lag, Renderer& renderer) const;
  21. void renderTextOverlay(float lag, Renderer& renderer, FontRenderer& fr) const;
  22. bool isRunning() const;
  23. private:
  24. Vector3 splineTangent(const Vector3& prev, const Vector3& current, const Vector3& next) const;
  25. Vector3 interpolate(const Vector3& a, const Vector3& b, const Vector3& tanA, const Vector3& tanB, float t) const;
  26. float distance(uint index, uint splits) const;
  27. Vector3 pointUntilDistance(float leftDistance, uint index, uint splits) const;
  28. void getPointsAndTangents(uint index, Vector3& a, Vector3& b, Vector3& tanA, Vector3& tanB) const;
  29. void updateDistances();
  30. const Control& control;
  31. const Clock& fps;
  32. const Clock& tps;
  33. RenderSettings& renderSettings;
  34. Vector3 lastPos;
  35. mutable Vector3 pos;
  36. Quaternion lastRotation;
  37. Quaternion rotation;
  38. BlockRegistry blockRegistry;
  39. World world;
  40. WorldRenderer worldRenderer;
  41. struct Point {
  42. Vector3 pos;
  43. Quaternion q;
  44. float distance;
  45. };
  46. List<Point, 25> cameraPoints;
  47. uint pointIndex;
  48. float moveSpeed;
  49. float movedLength;
  50. enum Mode {
  51. AUTO, PLAYER
  52. };
  53. Mode mode;
  54. KDTree kdTree;
  55. Lines lines;
  56. };
  57. #endif