]> git.localhorst.tv Git - blank.git/blobdiff - src/interface.hpp
minor optimizations in chunk
[blank.git] / src / interface.hpp
index 8bdb8fb7ca0248bf4cb06ce14c3c9cff55cfd8b1..9f43f4f6f662b6ba10b71d0706ebf5b202e9887b 100644 (file)
@@ -3,11 +3,14 @@
 
 #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>
 
 
 namespace blank {
@@ -30,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();
@@ -54,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;
@@ -70,10 +79,13 @@ private:
 
        Config config;
 
+       IntervalTimer place_timer;
+       IntervalTimer remove_timer;
+
        Block remove;
        Block selection;
 
-       bool front, back, left, right, up, down;
+       glm::tvec3<int> fwd, rev;
 
 };