summaryrefslogtreecommitdiff
path: root/scripts/cameraPivot.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cameraPivot.lua')
-rw-r--r--scripts/cameraPivot.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/scripts/cameraPivot.lua b/scripts/cameraPivot.lua
new file mode 100644
index 0000000..d2fad59
--- /dev/null
+++ b/scripts/cameraPivot.lua
@@ -0,0 +1,21 @@
+local prevx, prevy
+return function(entities, id, data)
+ if not prevx then
+ prevx, prevy = data.xpos, data.ypos
+ end
+ local dx = data.xpos - prevx
+ local dy = data.ypos - prevy
+ prevx, prevy = data.xpos, data.ypos
+
+ local node = entities:getComponent(id, "node")
+ local py = entities:getComponent(id, "pitchyaw")
+ py.pitch = py.pitch - dy
+ py.yaw = py.yaw - dx
+ if py.pitch > 89.9 then py.pitch = 89.9 end
+ if py.pitch < -89.9 then py.pitch = -89.9 end
+
+ node.matrix
+ :identity()
+ :rotateY(math.rad(py.yaw))
+ :rotateX(math.rad(py.pitch))
+end