]> git.localhorst.tv Git - blank.git/blobdiff - src/interface.hpp
minor optimizations in chunk
[blank.git] / src / interface.hpp
index 1f4bb9034baf8028a2bb0dd4386ea6165d40d92b..9f43f4f6f662b6ba10b71d0706ebf5b202e9887b 100644 (file)
@@ -3,9 +3,11 @@
 
 #include "block.hpp"
 #include "controller.hpp"
+#include "geometry.hpp"
 #include "hud.hpp"
 #include "model.hpp"
 #include "shader.hpp"
+#include "timer.hpp"
 
 #include <SDL.h>
 #include <glm/glm.hpp>
@@ -31,18 +33,20 @@ public:
 
        Interface(const Config &, World &);
 
-       void Handle(const SDL_KeyboardEvent &);
+       void HandlePress(const SDL_KeyboardEvent &);
+       void HandleRelease(const SDL_KeyboardEvent &);
        void Handle(const SDL_MouseMotionEvent &);
-       void Handle(const SDL_MouseButtonEvent &);
+       void HandlePress(const SDL_MouseButtonEvent &);
+       void HandleRelease(const SDL_MouseButtonEvent &);
        void Handle(const SDL_MouseWheelEvent &);
-       void Handle(const SDL_WindowEvent &);
+       void Handle(const SDL_WindowEvent &) noexcept;
 
        void FaceBlock();
        void TurnBlock();
 
        void PickBlock();
        void PlaceBlock();
-       void RemoveBlock();
+       void RemoveBlock() noexcept;
 
        void PrintBlockInfo();
        void PrintChunkInfo();
@@ -55,13 +59,17 @@ public:
 
        void Update(int dt);
 
-       void Render(DirectionalLighting &);
+       void Render(DirectionalLighting &) noexcept;
+
+private:
+       void CheckAim();
 
 private:
        World &world;
        FPSController ctrl;
        HUD hud;
 
+       Ray aim;
        Chunk *aim_chunk;
        int aim_block;
        glm::vec3 aim_normal;
@@ -71,6 +79,9 @@ private:
 
        Config config;
 
+       IntervalTimer place_timer;
+       IntervalTimer remove_timer;
+
        Block remove;
        Block selection;