aboutsummaryrefslogtreecommitdiff
path: root/main/input_default.cpp
diff options
context:
space:
mode:
authorPedro J. Estébanez2017-03-22 21:18:47 +0100
committerPedro J. Estébanez2017-03-22 21:18:47 +0100
commit2c2c48ffb3bd381d09d1e0e4389a2b86255fe20f (patch)
tree9c7dd950303a39941256a9e247215d1c4bcdd5e0 /main/input_default.cpp
parent9c75b9dddf18abf315f62caa6745daa05d4adbaf (diff)
downloadgodot-2c2c48ffb3bd381d09d1e0e4389a2b86255fe20f.tar.gz
godot-2c2c48ffb3bd381d09d1e0e4389a2b86255fe20f.tar.zst
godot-2c2c48ffb3bd381d09d1e0e4389a2b86255fe20f.zip
Implement warped mouse panning for 2D & 3D editors
Enabled by default as in Blender, but can be disabled separately for 2D & 3D; the core functionality is in Input so this could be reused or even exposed to scripts in the future
Diffstat (limited to 'main/input_default.cpp')
-rw-r--r--main/input_default.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/main/input_default.cpp b/main/input_default.cpp
index 0d82cd119..5e87025c0 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -433,6 +433,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) {
}