b3view/EventHandler.cpp

54 lines
1.8 KiB
C++
Raw Normal View History

2010-04-21 07:48:36 -07:00
#include "EventHandler.h"
#include "Utility.h"
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace irr;
using namespace irr::video;
using namespace irr::gui;
2010-04-21 07:48:36 -07:00
// Public
EventHandler::EventHandler(IrrlichtDevice* device)
2010-04-21 07:48:36 -07:00
{
m_Device = device;
m_EventReceivers = new map<EventReceiverType, IEventReceiver*>();
2010-04-21 07:48:36 -07:00
}
EventHandler::~EventHandler()
{
delete m_EventReceivers;
}
2019-04-19 14:13:58 -07:00
bool EventHandler::addEventReceiver(EventReceiverType type,
IEventReceiver* receiver)
2010-04-21 07:48:36 -07:00
{
m_EventReceivers->insert(make_pair(type, receiver));
2019-03-07 10:23:54 -08:00
return true;
2010-04-21 07:48:36 -07:00
}
// IEventReceiver
bool EventHandler::OnEvent(const SEvent& event)
2010-04-21 07:48:36 -07:00
{
if (event.EventType == EET_GUI_EVENT) {
2010-04-21 07:48:36 -07:00
// Pass to User Interface Handler
map<EventReceiverType, IEventReceiver*>::iterator iter = m_EventReceivers->find(ERT_USERINTERFACE);
iter->second->OnEvent(event);
} else if (event.EventType == EET_MOUSE_INPUT_EVENT) {
map<EventReceiverType, IEventReceiver*>::iterator iter = m_EventReceivers->find(ERT_3DVIEW);
iter->second->OnEvent(event);
} else if (event.EventType == EET_KEY_INPUT_EVENT) {
map<EventReceiverType, IEventReceiver*>::iterator iter = m_EventReceivers->find(ERT_USERINTERFACE);
iter->second->OnEvent(event);
} else if (event.EventType == EET_USER_EVENT) {
if (event.UserEvent.UserData1 == UEI_WINDOWSIZECHANGED) {
// Window resize handling - send to all subscribers
2019-04-19 12:29:30 -07:00
// (UserInterface will call snapWidgets to fix playbackWindow position)
map<EventReceiverType, IEventReceiver*>::iterator iter;
for (iter = m_EventReceivers->begin(); iter != m_EventReceivers->end(); iter++)
iter->second->OnEvent(event);
}
}
2010-04-21 07:48:36 -07:00
return false;
}