Hana
Loading...
Searching...
No Matches
Input.h
1#pragma once
2
3#include "Hana/Core/Core.h"
4
5namespace Hana
6{
7 class Input
8 {
9 public:
10 Input(const Input&) = delete;
11 Input& operator=(const Input&) = delete;
12
13 inline static bool IsKeyPressed(int keycode) { return s_Instance->IsKeyPressedImpl(keycode); }
14 inline static bool IsMouseButtonPressed(int button) { return s_Instance->IsMouseButtonPressedImpl(button); }
15 inline static std::pair<float, float> GetMousePosition() { return s_Instance->GetMousePositionImpl(); }
16 inline static float GetMouseX() { return s_Instance->GetMouseXImpl(); }
17 inline static float GetMouseY() { return s_Instance->GetMouseYImpl(); }
18 protected:
19 Input() = default;
20
21 virtual bool IsKeyPressedImpl(int keycode) = 0;
22 virtual bool IsMouseButtonPressedImpl(int button) = 0;
23 virtual std::pair<float, float> GetMousePositionImpl() = 0;
24 virtual float GetMouseXImpl() = 0;
25 virtual float GetMouseYImpl() = 0;
26 private:
27 static Scope<Input> s_Instance;
28 };
29}