Started implementation of first event/message passing system

This commit is contained in:
2022-06-10 22:44:40 +02:00
parent 4df6cfba90
commit 85f9c78adf
11 changed files with 140 additions and 12 deletions

View File

@ -20,3 +20,5 @@ extern void Start();
extern void Update();
extern void ImmediateGraphicsDraw();
extern void Stop();
extern BarinkEngine::InputManager InputSystem;

View File

@ -0,0 +1,11 @@
#pragma once
#include <string>
struct Event
{
public:
std::string name;
int argc;
void** argv;
};

View File

@ -0,0 +1,16 @@
#pragma once
#include "Event.h"
#include "EventListener.h"
class EventEmitter {
public:
void Subscribe (EventListener& subscriber);
void Unsubscribe(EventListener& subscriber);
protected:
std::list<EventListener*> subscribers;
void EmitEvent(Event& incident);
EventEmitter();
};

View File

@ -0,0 +1,5 @@
#include "EventListener.h"
void EventListener::ReceiveEvent(Event& incident)
{
}

View File

@ -0,0 +1,8 @@
#pragma once
#include "Event.h"
#include <list>
class EventListener{
public:
virtual void ReceiveEvent(Event& incident);
};

View File

@ -3,12 +3,13 @@
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include "../Include/EventSystem/EventListener.h"
class BarinkWindow{
class BarinkWindow : EventListener {
private:
GLFWwindow* window;
bool FullScreen;
@ -18,12 +19,15 @@ class BarinkWindow{
static bool InitGLFW();
public:
BarinkWindow(const int width, const int height);
~BarinkWindow();
GLFWwindow* windowptr();
void ReceiveEvent(Event& incident) override;
bool WindowShouldClose();
void Poll();

View File

@ -1,11 +1,11 @@
#pragma once
#include <vector>
#include "Graphics/Window.h"
#include "EventSystem/EventEmitter.h"
namespace BarinkEngine {
class InputManager {
class InputManager : EventEmitter {
public:
InputManager();
@ -13,6 +13,7 @@ namespace BarinkEngine {
void attach(BarinkWindow* window);
// GLFW Handlers
static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods);
static void CursorPositionCallback(GLFWwindow* window, double x, double y);
@ -21,5 +22,6 @@ namespace BarinkEngine {
static void ScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
private:
std::vector<BarinkWindow*> windows;
};
}