void handleEvents(WorldState & state, RenderEngine & render) { sf::Event event; while (window->pollEvent(event)) { if (event.type == sf::Event::Closed) state.setRunning(false); if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)) state.setRunning(false); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'r')) state.toggleModelRotate(); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'q')) state.toggleIncreaseVelocity(); if(event.type == sf::Event::Resized) { resize(event.size.width, event.size.height); } if(event.type == sf::Event::MouseButtonPressed) { state.lastClickPos[0] = event.mouseButton.x; state.lastClickPos[1] = (state.currentRes[1]-event.mouseButton.y); state.lastFrameDragPos[0] = event.mouseButton.x; state.lastFrameDragPos[1] = (state.currentRes[1]-event.mouseButton.y); state.mouseButtonDown = true; } if(event.type == sf::Event::MouseButtonReleased) state.mouseButtonDown = false; if(event.type == sf::Event::MouseMoved && state.mouseButtonDown) { state.cursorDragAmount[0] += state.lastFrameDragPos[0] - event.mouseMove.x; state.cursorDragAmount[1] += state.lastFrameDragPos[1] - (state.currentRes[1]-event.mouseMove.y); state.lastFrameDragPos[0] = event.mouseMove.x; state.lastFrameDragPos[1] = (state.currentRes[1]-event.mouseMove.y); } if(event.type == sf::Event::MouseWheelMoved) { state.zoomCamera(event.mouseWheel.delta); state.cursorScrollAmount += event.mouseWheel.delta; } if(event.type == sf::Event::MouseMoved) { state.cursorAbsolutePos[0] = event.mouseMove.x; state.cursorAbsolutePos[1] = (state.currentRes[1]-event.mouseMove.y); } if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Up)) state.zoomCamera(1); if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Down)) state.zoomCamera(-1); } }
void handleEvents(sf::Window & window, WorldState & state) { sf::Event event; while (window.pollEvent(event)) { // Close window : exit if (event.type == sf::Event::Closed) state.setRunning(false); // Escape key : exit if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)) state.setRunning(false); if (event.type == sf::Event::MouseMoved) { state.updateMousePos(event.mouseMove.x, event.mouseMove.y); } } }
void handleEvents(WorldState & state, RenderEngine & render) { sf::Event event; while (App->pollEvent(event)) { if (event.type == sf::Event::Closed) state.setRunning(false); if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)) state.setRunning(false); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'q')) state.setShadingMode(0); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'w')) state.setShadingMode(1); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'e')) state.setShadingMode(2); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 'r')) state.toggleModelRotate(); if((event.type == sf::Event::TextEntered) && (event.text.unicode == 't')) state.toggleLightRotate(); } }
void handleEvents(sf::Window & window, WorldState & state) { sf::Event event; while (window.pollEvent(event)) { // Close window : exit if (event.type == sf::Event::Closed) state.setRunning(false); // Escape key : exit if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)) state.setRunning(false); if (event.type == sf::Event::TextEntered) { Model const & model = state.getModel(); float time = state.getCurrentTime(); RenderEngine render = RenderEngine(render); switch (static_cast<char>(event.key.code)) { case 'q': printf("'q' should scale\n"); // scale = true. //if(!state.scaleEnabled()) state.toggleScale(); break; case 'w': printf("'w' should enable bouncing\n"); state.toggleTranslate(); break; case 'e': printf("'e' should enable z rotation\n"); // rotZ = true. state.toggleRotZ(); break; case 'r': printf("'r' should enable y rotation\n"); // rotY = true. state.toggleRotY(); break; default: printf("nothing\n"); break; } } // std::cout << "Your Input: " << static_cast<char>(event.key.code) << std::endl; //TODO add event handlers for qwer //'q' should scale //'w' should enable bouncing //'e' should enable z rotation //'r' should enable y rotation } }
void handleEvents(WorldState & state, RenderEngine & render) { bool shiftDown = sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) ||sf::Keyboard::isKeyPressed(sf::Keyboard::RShift); sf::Event Event; while (App->pollEvent(Event)) { if (Event.type == sf::Event::Closed) state.setRunning(false); if ((Event.type == sf::Event::KeyPressed) && (Event.key.code == sf::Keyboard::Escape)) state.setRunning(false); if (Event.type == sf::Event::MouseButtonPressed) { previousPos = glm::vec2(Event.mouseButton.x, Event.mouseButton.y); if(Event.mouseButton.button == sf::Mouse::Left && !shiftDown) buttonDown[0] = 1; if(Event.mouseButton.button == sf::Mouse::Right) buttonDown[1] = true; if(Event.mouseButton.button == sf::Mouse::Middle) buttonDown[2] = true; if(Event.mouseButton.button == sf::Mouse::Left && shiftDown) buttonDown[2] = true; } if (Event.type == sf::Event::MouseButtonReleased) { if(Event.mouseButton.button == sf::Mouse::Left && !shiftDown) buttonDown[0] = false; if(Event.mouseButton.button == sf::Mouse::Right) buttonDown[1] = false; if(Event.mouseButton.button == sf::Mouse::Middle) buttonDown[2] = false; if(Event.mouseButton.button == sf::Mouse::Left && shiftDown) buttonDown[2] = false; lastUpdate = timer.getElapsedTime().asSeconds(); } if (Event.type == sf::Event::Resized) { render.reshape( Event.size.width, Event.size.height ); state.setSize( Event.size.width, Event.size.height ); } } lastUpdate = timer.getElapsedTime().asSeconds(); bool needsUpdate = lastUpdate > TIME_BETWEEN_UPDATES; if (needsUpdate) { glm::ivec2 newPos = glm::ivec2(sf::Mouse::getPosition(*App).x, sf::Mouse::getPosition(*App).y); if(buttonDown[0]) state.updateRotate(previousPos, newPos); if(buttonDown[1]) state.updateXYTranslate(previousPos, newPos); if(buttonDown[2]) state.updateZTranslate(previousPos, newPos); lastUpdate = timer.restart().asSeconds(); previousPos = newPos; } }