Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_osmanager.hpp
Go to the documentation of this file.
1#pragma once
2#include "../foray_basics.hpp"
4#include <sdl2/SDL.h>
5#include <vector>
6
7namespace foray::osi {
10 {
11 public:
12 inline InputDevice* Mouse() { return mMouse; }
13 inline const InputDevice* Mouse() const { return mMouse; }
14 inline InputDevice* Keyboard() { return mKeyboard; }
15 inline const InputDevice* Keyboard() const { return mKeyboard; }
16 inline static OsManager* Instance() { return sInstance; }
17
19
20 OsManager(const OsManager& other) = delete;
21 OsManager(const OsManager&& other) = delete;
22 OsManager& operator=(const OsManager& other) = delete;
23 virtual ~OsManager();
24
25
27 virtual std::vector<InputDevice*> InputDevices();
28
30 virtual void Init();
32 virtual void Destroy();
33
36 virtual const Event* PollEvent();
37
38 protected:
43
44 inline static OsManager* sInstance = nullptr;
45
47 std::vector<std::unique_ptr<InputDevice>> mInputDevices;
48
50 virtual bool TranslateSDLEvent(const SDL_Event& sdl_event, Event*& out_event);
51
52 virtual Event* TranslateEvent_MouseButton(const SDL_Event& sdl_event);
53 virtual Event* TranslateEvent_Keyboard(const SDL_Event& sdl_event);
54 virtual Event* TranslateEvent_MouseMoved(const SDL_Event& sdl_event);
55 virtual Event* TranslateEvent_MouseScroll(const SDL_Event& sdl_event);
56 virtual Event* TranslateEvent_JoyAxis(const SDL_Event& sdl_event);
57 virtual Event* TranslateEvent_JoyButton(const SDL_JoyButtonEvent& sdl_event);
58 virtual Event* TranslateEvent_JoyDevice(const SDL_JoyDeviceEvent& sdl_event);
59 virtual Event* TranslateEvent_WindowClosed(Window* window, uint32_t timestamp);
60 virtual Event* TranslateEvent_WindowResized(Window* window, const SDL_WindowEvent& wevent);
61 virtual Event* TranslateEvent_WindowFocus(Window* window, const SDL_WindowEvent& wevent, bool mouseonly, bool focus);
62
63 Event* mLastEvent = nullptr;
64 };
65} // namespace foray
Base class for operating system events.
Definition foray_event.hpp:13
Wraps a generic input device (mouse, keyboard, joystick, controller ...) in a hardware agnostic way.
Definition foray_inputdevice.hpp:13
Class of which a single instance needs to be present for interaction with the operating system via SD...
Definition foray_osmanager.hpp:10
static OsManager * Instance()
Definition foray_osmanager.hpp:16
InputDevice * Mouse()
Definition foray_osmanager.hpp:12
InputDevice * mMouse
Mouse input device. Assumed standard and always present.
Definition foray_osmanager.hpp:40
const InputDevice * Mouse() const
Definition foray_osmanager.hpp:13
virtual Event * TranslateEvent_Keyboard(const SDL_Event &sdl_event)
virtual Event * TranslateEvent_JoyDevice(const SDL_JoyDeviceEvent &sdl_event)
virtual Event * TranslateEvent_MouseScroll(const SDL_Event &sdl_event)
OsManager(const OsManager &other)=delete
virtual Event * TranslateEvent_JoyButton(const SDL_JoyButtonEvent &sdl_event)
virtual Event * TranslateEvent_MouseButton(const SDL_Event &sdl_event)
virtual Event * TranslateEvent_WindowFocus(Window *window, const SDL_WindowEvent &wevent, bool mouseonly, bool focus)
InputDevice * mKeyboard
Keyboard input device. Assumed standard and always present.
Definition foray_osmanager.hpp:42
virtual Event * TranslateEvent_MouseMoved(const SDL_Event &sdl_event)
virtual void Destroy()
Cleans the SDL subsystem.
OsManager(const OsManager &&other)=delete
const InputDevice * Keyboard() const
Definition foray_osmanager.hpp:15
Event * mLastEvent
Definition foray_osmanager.hpp:63
virtual Event * TranslateEvent_JoyAxis(const SDL_Event &sdl_event)
virtual void Init()
Inits the SDL subsystem and catalogues input devices.
virtual bool TranslateSDLEvent(const SDL_Event &sdl_event, Event *&out_event)
Translates SDL event structures to Event class objects.
std::vector< std::unique_ptr< InputDevice > > mInputDevices
A collection of all non-standard input devices recognized by this application.
Definition foray_osmanager.hpp:47
virtual std::vector< InputDevice * > InputDevices()
A collection of all non-standard input devices recognized by this application.
virtual const Event * PollEvent()
Polls next event from system event queue. Retuns nullptr if no event present.
virtual Event * TranslateEvent_WindowClosed(Window *window, uint32_t timestamp)
OsManager & operator=(const OsManager &other)=delete
virtual Event * TranslateEvent_WindowResized(Window *window, const SDL_WindowEvent &wevent)
static OsManager * sInstance
Definition foray_osmanager.hpp:44
InputDevice * Keyboard()
Definition foray_osmanager.hpp:14
Window class. Provides access to common properties of operating system level windows.
Definition foray_window.hpp:15
Definition foray_env.hpp:7