Did a lot of boilerplate on the Event wrapper pt.2
This commit is contained in:
126
src/Input.cpp
126
src/Input.cpp
@@ -13,13 +13,21 @@ Input::~Input()
|
||||
|
||||
}
|
||||
|
||||
void Input::consume_events(sf::RenderWindow *window) {
|
||||
void Input::consume_sf_events(sf::RenderWindow *window) {
|
||||
|
||||
std::list<sf::Event> sf_event_queue;
|
||||
|
||||
sf::Event e;
|
||||
while (window->pollEvent(e)) {
|
||||
event_queue.push_back(e);
|
||||
sf_event_queue.push_back(e);
|
||||
}
|
||||
|
||||
transpose_sf_events(sf_event_queue);
|
||||
|
||||
}
|
||||
|
||||
void Input::consume_vr_events() {
|
||||
|
||||
}
|
||||
|
||||
void Input::set_flags() {
|
||||
@@ -41,3 +49,117 @@ void Input::dispatch_events() {
|
||||
event_queue.pop_front();
|
||||
}
|
||||
}
|
||||
|
||||
void Input::transpose_sf_events(std::list<sf::Event> sf_event_queue) {
|
||||
|
||||
for (auto sf_event: sf_event_queue) {
|
||||
|
||||
vr::Event vr_event;
|
||||
|
||||
switch(sf_event.type) {
|
||||
|
||||
case sf::Event::Closed : {
|
||||
event_queue.push_back(vr::Closed());
|
||||
};
|
||||
case sf::Event::Resized: {
|
||||
event_queue.push_back(vr::Resized());
|
||||
};
|
||||
case sf::Event::LostFocus: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::GainedFocus: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
|
||||
case sf::Event::TextEntered: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::KeyPressed: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::KeyReleased: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::MouseWheelMoved: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::Closed: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
case sf::Event::Closed: {
|
||||
vr_event = vr::Closed();
|
||||
};
|
||||
|
||||
}
|
||||
if (e.type == sf::Event::Closed ||
|
||||
e.type == sf::Event::LostFocus ||
|
||||
e.type == sf::Event::GainedFocus) {
|
||||
|
||||
event_class = Event_Class::WindowEvent;
|
||||
}
|
||||
|
||||
// Preserve a little of sfml's default behavior and separate resized event
|
||||
else if (e.type == sf::Event::Resized) {
|
||||
event_class = Event_Class::SizeEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::TextEntered) {
|
||||
event_class = Event_Class::TextEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::KeyPressed ||
|
||||
e.type == sf::Event::KeyReleased) {
|
||||
|
||||
event_class = Event_Class::KeyEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::MouseWheelMoved ||
|
||||
e.type == sf::Event::MouseWheelScrolled) {
|
||||
|
||||
event_class = Event_Class::MouseWheelScrollEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::MouseButtonPressed ||
|
||||
e.type == sf::Event::MouseButtonReleased) {
|
||||
|
||||
event_class = Event_Class::MouseButtonEvent;
|
||||
}
|
||||
|
||||
// Is this a good idea, mixing events that contain data, and don't contain data?
|
||||
else if (e.type == sf::Event::MouseMoved ||
|
||||
e.type == sf::Event::MouseEntered ||
|
||||
e.type == sf::Event::MouseLeft) {
|
||||
|
||||
event_class = Event_Class::MouseMoveEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::JoystickButtonPressed ||
|
||||
e.type == sf::Event::JoystickButtonReleased) {
|
||||
|
||||
event_class = Event_Class::JoystickButtonEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::JoystickMoved) {
|
||||
event_class = Event_Class::JoystickMoveEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::JoystickConnected ||
|
||||
e.type == sf::Event::JoystickDisconnected) {
|
||||
|
||||
event_class = Event_Class::JoystickConnectEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::TouchBegan ||
|
||||
e.type == sf::Event::TouchEnded ||
|
||||
e.type == sf::Event::TouchMoved) {
|
||||
|
||||
event_class = Event_Class::TouchEvent;
|
||||
}
|
||||
|
||||
else if (e.type == sf::Event::SensorChanged) {
|
||||
event_class = Event_Class::SensorEvent;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user