mirror of
https://github.com/minetest/minetest.git
synced 2024-12-24 07:02:23 +01:00
Fix shootline not being updated if press and release happen in the same step (#14606)
This commit is contained in:
parent
70bddcf318
commit
d7f9da49eb
@ -703,6 +703,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event)
|
|||||||
m_move_pos = touch_pos;
|
m_move_pos = touch_pos;
|
||||||
// DON'T reset m_tap_state here, otherwise many short taps
|
// DON'T reset m_tap_state here, otherwise many short taps
|
||||||
// will be ignored if you tap very fast.
|
// will be ignored if you tap very fast.
|
||||||
|
m_had_move_id = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -821,13 +822,14 @@ void TouchScreenGUI::step(float dtime)
|
|||||||
// Note that the shootline isn't used if touch_use_crosshair is enabled.
|
// Note that the shootline isn't used if touch_use_crosshair is enabled.
|
||||||
// Only updating when m_has_move_id means that the shootline will stay at
|
// Only updating when m_has_move_id means that the shootline will stay at
|
||||||
// it's last in-world position when the player doesn't need it.
|
// it's last in-world position when the player doesn't need it.
|
||||||
if (!m_draw_crosshair && m_has_move_id) {
|
if (!m_draw_crosshair && (m_has_move_id || m_had_move_id)) {
|
||||||
v2s32 pointer_pos = getPointerPos();
|
v2s32 pointer_pos = getPointerPos();
|
||||||
m_shootline = m_device
|
m_shootline = m_device
|
||||||
->getSceneManager()
|
->getSceneManager()
|
||||||
->getSceneCollisionManager()
|
->getSceneCollisionManager()
|
||||||
->getRayFromScreenCoordinates(pointer_pos);
|
->getRayFromScreenCoordinates(pointer_pos);
|
||||||
}
|
}
|
||||||
|
m_had_move_id = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchScreenGUI::resetHotbarRects()
|
void TouchScreenGUI::resetHotbarRects()
|
||||||
|
@ -259,6 +259,9 @@ private:
|
|||||||
u64 m_move_downtime = 0;
|
u64 m_move_downtime = 0;
|
||||||
// m_move_pos stays valid even after m_move_id has been released.
|
// m_move_pos stays valid even after m_move_id has been released.
|
||||||
v2s32 m_move_pos;
|
v2s32 m_move_pos;
|
||||||
|
// This is needed so that we don't miss if m_has_move_id is true for less
|
||||||
|
// than one client step, i.e. press and release happen in the same step.
|
||||||
|
bool m_had_move_id = false;
|
||||||
|
|
||||||
bool m_has_joystick_id = false;
|
bool m_has_joystick_id = false;
|
||||||
size_t m_joystick_id;
|
size_t m_joystick_id;
|
||||||
|
Loading…
Reference in New Issue
Block a user