diff options
Diffstat (limited to 'scripts/cameraPivot.lua')
-rw-r--r-- | scripts/cameraPivot.lua | 21 |
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 |