bool Input::step() { INIT_ASSERT(Input); int count; for (unsigned i = 0; i < NUM_OF_KEYS; ++i) { keyState[i] = keyPress[i] > keyRelease[i]; if (glfwGetKey(Window::instance().window, i) == GLFW_PRESS) keyPress[i] = glfwGetTime(); else keyRelease[i] = glfwGetTime(); } for (unsigned i = 0; i < NUM_OF_MOUSE_BTNS; ++i) { mouseState[i] = mousePress[i] > mouseRelease[i]; if (glfwGetMouseButton(Window::instance().window, i) == GLFW_PRESS) mousePress[i] = glfwGetTime(); else mouseRelease[i] = glfwGetTime(); } for (unsigned i = 0; i < activeJoysticks; ++i) { for (unsigned j = 0; j < NUM_OF_JOY_BTNS; ++j) { joyState[i][j] = joyPress[i][j] > joyRelease[i][j]; if (glfwGetJoystickButtons(i, &count)[j] == GLFW_PRESS) joyPress[i][j] = glfwGetTime(); else joyRelease[i][j] = glfwGetTime(); } } double x, y; glfwGetCursorPos(Window::instance().window, &x, &y); mouseX = x; mouseY = y; for (unsigned i = 0; i < activeJoysticks; ++i) for (unsigned j = 0; j < NUM_OF_JOY_AXES; ++j) joyAxes[i][j] = glfwGetJoystickAxes(i, &count)[j]; return false; }
bool Input::step() { INIT_ASSERT(Input); for (unsigned i = 0; i < 400; ++i) { keyState[i] = keyPress[i] > keyRelease[i]; if (sfw::getKey(i)) keyPress[i] = sfw::getTime(); else keyRelease[i] = sfw::getTime(); } for (unsigned i = 0; i < 10; ++i) { mouseState[i] = mousePress[i] > mouseRelease[i]; if (sfw::getMouseButton(i)) mousePress[i] = sfw::getTime(); else mouseRelease[i] = sfw::getTime(); } mouseX = sfw::getMouseX(); mouseY = sfw::getMouseY(); return false; }
float Input::getMouseY() { INIT_ASSERT(Input); return mouseY; }
bool Input::getJoyRelease(int joy, unsigned key) { INIT_ASSERT(Input); return !getJoy(joy, key) && joyState[joy][key]; }
bool Input::getJoyPress(int joy, unsigned key) { INIT_ASSERT(Input); return getJoy(joy, key) && !joyState[joy][key]; }
bool Input::getJoy(int joy, unsigned key) { INIT_ASSERT(Input); return joyPress[joy][key] > joyRelease[joy][key]; }
float Input::getJoyAxis(int joy, unsigned axis) { INIT_ASSERT(Input); return joyAxes[joy][axis]; }
void Window::term() { INIT_ASSERT(Window); sfw::termContext(); }
bool Input::getMouseButtonPress(unsigned key) { INIT_ASSERT(Input); return getMouseButton(key) && !mouseState[key]; }
bool Input::getMouseButton(unsigned key) { INIT_ASSERT(Input); return mousePress[key] > mouseRelease[key]; }
float Input::keyDelta(unsigned key) { INIT_ASSERT(Input); return keyPress[key] - keyRelease[key]; }
bool Input::getKeyRelease(unsigned key) { INIT_ASSERT(Input); return !getKey(key) && keyState[key]; }
bool Input::getKeyPress(unsigned key) { INIT_ASSERT(Input); return getKey(key) && !keyState[key]; }
bool Input::getKey(unsigned key) { INIT_ASSERT(Input); return keyPress[key] > keyRelease[key]; }
float Time::getTotalTime() { INIT_ASSERT(Time); return sfw::getTime(); }
bool Input::getMouseButtonRelease(unsigned key) { INIT_ASSERT(Input); return !getMouseButton(key) && mouseState[key]; }
float Time::getDeltaTime() { INIT_ASSERT(Time); return sfw::getDeltaTime(); }
int Input::getActiveJoysticks() { INIT_ASSERT(Input); return activeJoysticks; }
bool Window::step() { INIT_ASSERT(Window); return sfw::stepContext(); }
void Window::term() { INIT_ASSERT(Window); sfw::termContext(); isInit = false; }