• KeyPressHandle.hpp
  • #pragma once
    #include <Gorgon/Input/Keyboard.h>
    
    class KeyPressHandle {
        Gorgon::Input::Keyboard::Key key; 
        bool pressed;
        
        public: 
        KeyPressHandle(Gorgon::Input::Keyboard::Key key) : key(key), pressed(false) {}
    
        void Press() {
            if(pressed) { return; }
            this->pressed = true;
        }
    
        void DoIfPressed() {
            if(not pressed) { return; }
            do_if_pressed();
        }
    
        void Release() {
            if(not pressed) { return; }
            pressed = false; 
        }
    
        void PressIf(Gorgon::Input::Keyboard::Key Key, float active) {
            if(Key == key and active) {
                Press();
            }
        }
    
        void ReleaseIf(Gorgon::Input::Keyboard::Key Key, float active) {
            if(Key == key and not active) {
                Release(); 
            }
        }
    
        std::function<void()> do_if_pressed;
    };