aboutsummaryrefslogtreecommitdiff
path: root/utility
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-10-08 20:55:57 +0200
committerAdrian Kummerlaender2019-10-08 20:55:57 +0200
commit850a3ac48046e3630524c67ecac5e2f26d499b3f (patch)
treea2744f67a12a7d8f9cd0689cfecf935f655b1362 /utility
parent5c55995cbaedbeb0f6b9ee0ce9f3e69daaf02119 (diff)
downloadsymlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar.gz
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar.bz2
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar.lz
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar.xz
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.tar.zst
symlbm_playground-850a3ac48046e3630524c67ecac5e2f26d499b3f.zip
Improve mouse monitoring, add 3d view shift support
Diffstat (limited to 'utility')
-rw-r--r--utility/mouse.py25
-rw-r--r--utility/projection.py7
2 files changed, 23 insertions, 9 deletions
diff --git a/utility/mouse.py b/utility/mouse.py
index 29d660d..5d7dd5d 100644
--- a/utility/mouse.py
+++ b/utility/mouse.py
@@ -1,11 +1,10 @@
from OpenGL.GLUT import *
class MouseDragMonitor:
- def __init__(self, button, drag_callback, zoom_callback):
+ def __init__(self, button, callback):
self.button = button
self.active = False
- self.drag_callback = drag_callback
- self.zoom_callback = zoom_callback
+ self.callback = callback
def on_mouse(self, button, state, x, y):
if button == self.button:
@@ -13,15 +12,23 @@ class MouseDragMonitor:
self.last_x = x
self.last_y = y
- if button == 3:
- self.zoom_callback(-1.0)
- elif button == 4:
- self.zoom_callback(1.0)
-
def on_mouse_move(self, x, y):
if self.active:
delta_x = self.last_x - x
delta_y = y - self.last_y
self.last_x = x
self.last_y = y
- self.drag_callback(delta_x, delta_y)
+ self.callback(delta_x, delta_y)
+
+class MouseScrollMonitor:
+ def __init__(self, callback):
+ self.callback = callback
+
+ def on_mouse(self, button, state, x, y):
+ if button == 3:
+ self.callback(-1.0)
+ elif button == 4:
+ self.callback(1.0)
+
+ def on_mouse_move(self, x, y):
+ pass
diff --git a/utility/projection.py b/utility/projection.py
index 335e488..1750fac 100644
--- a/utility/projection.py
+++ b/utility/projection.py
@@ -39,6 +39,13 @@ class Rotation:
self.rotation_x = quaternion.Quaternion()
self.update(x,z)
+ def shift(self, x, z):
+ self.matrix = numpy.matmul(
+ self.matrix,
+ matrix44.create_from_translation([x,0,z])
+ )
+ self.inverse_matrix = numpy.linalg.inv(self.matrix)
+
def update(self, x, z):
rotation_x = quaternion.Quaternion(quaternion.create_from_eulers([x,0,0]))
rotation_z = self.rotation_x.conjugate.cross(