Program Listing for File inputevents.hpp

Return to documentation for file (/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/application/events/inputevents.hpp)

#pragma once
#include <core/core.hpp>
#include <application/input/inputmap.hpp>


namespace legion::application
{
    template <class T>
    struct input_action : public events::event<T>
    {

        void set(bool v, inputmap::modifier_keys m, inputmap::method id)
        {
            value = v;
            mods = m;
            identifier = id;
        }

        float input_delta;
        bool value{};
        inputmap::modifier_keys mods{};
        inputmap::method identifier{};

        virtual bool unique() override { return false; }

        L_NODISCARD bool pressed()  const { return value == true;  }
        L_NODISCARD bool released() const { return value == false; }
    };

    template <class T>
    struct input_axis : public events::event<T>
    {
        float input_delta;

        std::vector<float> value_parts;
        float value{};

        std::vector<inputmap::modifier_keys> mods_parts{};
        inputmap::modifier_keys mods{};

        std::vector<inputmap::method> identifier_parts{};
        inputmap::method identifier{};


        virtual bool unique() override { return false; }
    };

}