mirror of
https://github.com/NoelFB/blah.git
synced 2025-06-29 19:25:26 +08:00
more precise timing
renamed Time::elapsed -> Time::seconds, change type to double updated game to store ticks (microseconds) instead of milliseconds for better update precision
This commit is contained in:
@ -93,7 +93,7 @@ void InputBackend::on_mouse_down(MouseButton button)
|
||||
{
|
||||
g_next_state.mouse.down[i] = true;
|
||||
g_next_state.mouse.pressed[i] = true;
|
||||
g_next_state.mouse.timestamp[i] = Time::milliseconds;
|
||||
g_next_state.mouse.timestamp[i] = Time::ticks;
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ void InputBackend::on_key_down(Key key)
|
||||
{
|
||||
g_next_state.keyboard.down[i] = true;
|
||||
g_next_state.keyboard.pressed[i] = true;
|
||||
g_next_state.keyboard.timestamp[i] = Time::milliseconds;
|
||||
g_next_state.keyboard.timestamp[i] = Time::ticks;
|
||||
}
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ void InputBackend::on_button_down(int index, int button)
|
||||
{
|
||||
g_next_state.controllers[index].down[button] = 1;
|
||||
g_next_state.controllers[index].pressed[button] = 1;
|
||||
g_next_state.controllers[index].button_timestamp[button] = Time::milliseconds;
|
||||
g_next_state.controllers[index].button_timestamp[button] = Time::ticks;
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,7 +194,7 @@ void InputBackend::on_axis_move(int index, int axis, float value)
|
||||
axis < g_next_state.controllers[index].axis_count)
|
||||
{
|
||||
g_next_state.controllers[index].axis[axis] = value;
|
||||
g_next_state.controllers[index].axis_timestamp[axis] = Time::milliseconds;
|
||||
g_next_state.controllers[index].axis_timestamp[axis] = Time::ticks;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,16 +102,16 @@ void VirtualAxis::update()
|
||||
if (m_value_i != 0 && m_last_value_i != m_value_i)
|
||||
{
|
||||
m_pressed = true;
|
||||
m_last_press_time = m_repeat_press_time = Time::elapsed;
|
||||
m_last_press_time = m_repeat_press_time = Time::seconds;
|
||||
}
|
||||
else if (m_value_i == m_last_value_i && m_value_i != 0)
|
||||
{
|
||||
if (Time::elapsed - m_last_press_time <= m_press_buffer)
|
||||
if (Time::seconds - m_last_press_time <= m_press_buffer)
|
||||
m_pressed = true;
|
||||
else if (m_repeat_interval > 0 && Time::elapsed >= m_repeat_press_time + m_repeat_delay)
|
||||
else if (m_repeat_interval > 0 && Time::seconds >= m_repeat_press_time + m_repeat_delay)
|
||||
{
|
||||
int prev = (int)((Time::previous_elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int prev = (int)((Time::previous_seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
m_pressed = prev < cur;
|
||||
}
|
||||
}
|
||||
@ -120,9 +120,9 @@ void VirtualAxis::update()
|
||||
if (m_last_value_i != 0 && m_value_i != m_last_value_i)
|
||||
{
|
||||
m_released = true;
|
||||
m_last_release_time = Time::elapsed;
|
||||
m_last_release_time = Time::seconds;
|
||||
}
|
||||
else if (Time::elapsed - m_last_release_time <= m_release_buffer)
|
||||
else if (Time::seconds - m_last_release_time <= m_release_buffer)
|
||||
m_released = true;
|
||||
else
|
||||
m_released = false;
|
||||
|
@ -68,7 +68,7 @@ void VirtualButton::update()
|
||||
m_pressed = false;
|
||||
m_released = false;
|
||||
|
||||
//Keys
|
||||
// Keys
|
||||
for (int i = 0; i < m_keys_len; i++)
|
||||
{
|
||||
m_keys[i].update();
|
||||
@ -78,7 +78,7 @@ void VirtualButton::update()
|
||||
m_released = m_released || m_keys[i].released;
|
||||
}
|
||||
|
||||
//Buttons
|
||||
// Buttons
|
||||
for (int i = 0; i < m_buttons_len; i++)
|
||||
{
|
||||
m_buttons[i].update();
|
||||
@ -88,7 +88,7 @@ void VirtualButton::update()
|
||||
m_released = m_released || m_buttons[i].released;
|
||||
}
|
||||
|
||||
//Axes
|
||||
// Axes
|
||||
for (int i = 0; i < m_axes_len; i++)
|
||||
{
|
||||
m_axes[i].update();
|
||||
@ -98,27 +98,27 @@ void VirtualButton::update()
|
||||
m_released = m_released || m_axes[i].released;
|
||||
}
|
||||
|
||||
//pressed?
|
||||
// pressed?
|
||||
if (m_pressed)
|
||||
{
|
||||
m_repeat_press_time = m_last_press_time = Time::elapsed;
|
||||
m_repeat_press_time = m_last_press_time = Time::seconds;
|
||||
}
|
||||
else if (Time::elapsed - m_last_press_time <= m_press_buffer)
|
||||
else if (Time::seconds - m_last_press_time <= m_press_buffer)
|
||||
{
|
||||
m_pressed = true;
|
||||
}
|
||||
else if (m_down && m_repeat_interval > 0 && Time::elapsed >= m_repeat_press_time + m_repeat_delay)
|
||||
else if (m_down && m_repeat_interval > 0 && Time::seconds >= m_repeat_press_time + m_repeat_delay)
|
||||
{
|
||||
int prev = (int)((Time::previous_elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int prev = (int)((Time::previous_seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
m_pressed = prev < cur;
|
||||
}
|
||||
|
||||
//released?
|
||||
// released?
|
||||
if (m_released)
|
||||
m_last_release_time = Time::elapsed;
|
||||
m_last_release_time = Time::seconds;
|
||||
else
|
||||
m_released = Time::elapsed - m_last_release_time <= m_release_buffer;
|
||||
m_released = Time::seconds - m_last_release_time <= m_release_buffer;
|
||||
}
|
||||
|
||||
void VirtualButton::KeyNode::init(Key key)
|
||||
|
@ -118,16 +118,16 @@ void VirtualStick::update()
|
||||
if (m_value_i != Point::zero && m_last_value_i != m_value_i)
|
||||
{
|
||||
m_pressed = true;
|
||||
m_last_press_time = m_repeat_press_time = Time::elapsed;
|
||||
m_last_press_time = m_repeat_press_time = Time::seconds;
|
||||
}
|
||||
else if (m_value_i == m_last_value_i && m_value_i != Point::zero)
|
||||
{
|
||||
if (Time::elapsed - m_last_press_time <= m_press_buffer)
|
||||
if (Time::seconds - m_last_press_time <= m_press_buffer)
|
||||
m_pressed = true;
|
||||
else if (m_repeat_interval > 0 && Time::elapsed >= m_repeat_press_time + m_repeat_delay)
|
||||
else if (m_repeat_interval > 0 && Time::seconds >= m_repeat_press_time + m_repeat_delay)
|
||||
{
|
||||
int prev = (int)((Time::previous_elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::elapsed - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int prev = (int)((Time::previous_seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
int cur = (int)((Time::seconds - m_repeat_press_time - m_repeat_delay) / m_repeat_interval);
|
||||
m_pressed = prev < cur;
|
||||
}
|
||||
}
|
||||
@ -136,9 +136,9 @@ void VirtualStick::update()
|
||||
if (m_last_value_i != Point::zero && m_value_i != m_last_value_i)
|
||||
{
|
||||
m_released = true;
|
||||
m_last_release_time = Time::elapsed;
|
||||
m_last_release_time = Time::seconds;
|
||||
}
|
||||
else if (Time::elapsed - m_last_release_time <= m_release_buffer)
|
||||
else if (Time::seconds - m_last_release_time <= m_release_buffer)
|
||||
m_released = true;
|
||||
else
|
||||
m_released = false;
|
||||
|
Reference in New Issue
Block a user