Merge branch 'maint-platform' into dev
This commit is contained in:
commit
f86a1ae90c
45 changed files with 1091 additions and 1001 deletions
56
source/System/Event.cpp
Normal file
56
source/System/Event.cpp
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
#include <Spectre/System/Event.h>
|
||||
|
||||
namespace sp {
|
||||
|
||||
Event::Event(Type type) :
|
||||
type (type)
|
||||
{
|
||||
}
|
||||
|
||||
std::string Event::KeyEvent::getKeyName() const
|
||||
{
|
||||
return Keyboard::getKeyName(code);
|
||||
}
|
||||
|
||||
std::string Event::MouseButtonEvent::getName() const
|
||||
{
|
||||
return Mouse::getButtonName(button);
|
||||
}
|
||||
|
||||
// Helper methods
|
||||
|
||||
Event Event::createSize(Display *display, int width, int height)
|
||||
{
|
||||
Event event(Size);
|
||||
event.size.display = display;
|
||||
event.size.width = width;
|
||||
event.size.height = height;
|
||||
return event;
|
||||
}
|
||||
|
||||
Event Event::createKey(Keyboard::Key code, bool pressed)
|
||||
{
|
||||
Event event(Key);
|
||||
event.key.code = code;
|
||||
event.key.pressed = pressed;
|
||||
return event;
|
||||
}
|
||||
|
||||
Event Event::createMouseButton(Mouse::Button button, bool pressed)
|
||||
{
|
||||
Event event(MouseButton);
|
||||
event.mouseButton.button = button;
|
||||
event.mouseButton.pressed = pressed;
|
||||
return event;
|
||||
}
|
||||
|
||||
Event Event::createMouseMove(unsigned int x, unsigned int y)
|
||||
{
|
||||
Event event(MouseMove);
|
||||
event.mouseMove.x = x;
|
||||
event.mouseMove.y = y;
|
||||
return event;
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
14
source/System/EventListener.cpp
Normal file
14
source/System/EventListener.cpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#include <Spectre/Display/Display.h>
|
||||
#include <Spectre/System/EventListener.h>
|
||||
|
||||
namespace sp {
|
||||
|
||||
void EventListener::onSizeChanged(Display* display, int width, int height)
|
||||
{
|
||||
}
|
||||
|
||||
void EventListener::onEvent(const Event& event)
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
|
|
@ -4,8 +4,42 @@
|
|||
|
||||
namespace sp {
|
||||
|
||||
void MessageHandler::registerListener(EventListener *listener)
|
||||
{
|
||||
for(auto it = m_listeners.begin(); it != m_listeners.end(); it++) {
|
||||
|
||||
if (listener == *it) {
|
||||
// Already in vector. nothing to do.
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_listeners.push_back(listener);
|
||||
}
|
||||
|
||||
void MessageHandler::unregisterListener(EventListener *listener)
|
||||
{
|
||||
for(auto it = m_listeners.begin(); it != m_listeners.end(); it++) {
|
||||
|
||||
if (listener == *it) {
|
||||
m_listeners.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MessageHandler::onSizeChanged(Display* display, int width, int height)
|
||||
{
|
||||
for(EventListener* listener : m_listeners) {
|
||||
listener->onSizeChanged(display, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
void MessageHandler::onEvent(const Event& event)
|
||||
{
|
||||
for(EventListener* listener : m_listeners) {
|
||||
listener->onEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
|
|
|
|||
|
|
@ -1,15 +1,38 @@
|
|||
|
||||
#include <Spectre/System/MessageQueue.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <Platform/Win32/Win32EventQueue.h>
|
||||
typedef sp::Win32EventQueue ImplType;
|
||||
#else
|
||||
#error "No MessageQueue implementation exists"
|
||||
#endif
|
||||
|
||||
|
||||
namespace sp {
|
||||
|
||||
void MessageQueue::postEvent(SysEvent event)
|
||||
MessageQueue::MessageQueue()
|
||||
{
|
||||
m_impl = new ImplType();
|
||||
}
|
||||
|
||||
MessageQueue::~MessageQueue()
|
||||
{
|
||||
delete m_impl;
|
||||
}
|
||||
|
||||
void MessageQueue::postEvent(Event event)
|
||||
{
|
||||
m_queue.push_back(event);
|
||||
}
|
||||
|
||||
bool MessageQueue::pollEvent(SysEvent& event)
|
||||
bool MessageQueue::pollEvent(Event& event)
|
||||
{
|
||||
// Process platform events first.
|
||||
if (m_impl->poll(event)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!isEmpty()) {
|
||||
event = m_queue.front();
|
||||
m_queue.pop_front();
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
#include <Spectre/System/SystemEvent.h>
|
||||
|
||||
namespace sp {
|
||||
|
||||
SysEvent::SysEvent(Type type) :
|
||||
type (type)
|
||||
{
|
||||
}
|
||||
|
||||
SysEvent SysEvent::sizeEvent(Display *display, int width, int height)
|
||||
{
|
||||
SysEvent event(Size);
|
||||
event.size.display = display;
|
||||
event.size.width = width;
|
||||
event.size.height = height;
|
||||
return event;
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
Loading…
Add table
Add a link
Reference in a new issue