diff options
| author | Pedro J. Estébanez | 2017-03-22 21:18:47 +0100 |
|---|---|---|
| committer | Pedro J. Estébanez | 2017-03-22 21:36:52 +0100 |
| commit | f5004b78d0468641cd03619ecfecb42429621a70 (patch) | |
| tree | 42011a7bf4ab8b602899e9d3dacbc1fdeb21952f /main/input_default.cpp | |
| parent | 33a2c5def0f55ef67196e35ac3309d3f9b70d967 (diff) | |
| download | godot-f5004b78d0468641cd03619ecfecb42429621a70.tar.gz godot-f5004b78d0468641cd03619ecfecb42429621a70.tar.zst godot-f5004b78d0468641cd03619ecfecb42429621a70.zip | |
Diffstat (limited to 'main/input_default.cpp')
| -rw-r--r-- | main/input_default.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/main/input_default.cpp b/main/input_default.cpp index bc409960d..8e352ca8e 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -478,6 +478,17 @@ void InputDefault::warp_mouse_pos(const Vector2 &p_to) { OS::get_singleton()->warp_mouse_pos(p_to); } +Point2i InputDefault::warp_mouse_motion(const InputEventMouseMotion &p_motion, const Rect2 &p_rect) { + + const Point2i rel_warped(Math::fmod(p_motion.relative_x, p_rect.size.x), Math::fmod(p_motion.relative_y, p_rect.size.y)); + const Point2i pos_local = Point2i(p_motion.global_x, p_motion.global_y) - p_rect.pos; + const Point2i pos_warped(Math::fposmod(pos_local.x, p_rect.size.x), Math::fposmod(pos_local.y, p_rect.size.y)); + if (pos_warped != pos_local) { + OS::get_singleton()->warp_mouse_pos(pos_warped + p_rect.pos); + } + return rel_warped; +} + void InputDefault::iteration(float p_step) { } |
