diff options
| author | iamcheeseman <[email protected]> | 2026-04-03 09:44:29 -0400 |
|---|---|---|
| committer | iamcheeseman <[email protected]> | 2026-04-03 09:44:29 -0400 |
| commit | 623c351bab9e63c421939dc94d6930f9d94ba8d8 (patch) | |
| tree | 961d11d9c84113a6c42c1b558fde59d60287e348 /src/camera.lua | |
| parent | 94cc023a056ebc49ed883739e9f42f51598e57a0 (diff) | |
| parent | f26ba2147c7325595780bdc5dae56f1315e5495e (diff) | |
Merge branch 'main' of ssh://codeberg.org/the-gutter/gutshot
Diffstat (limited to 'src/camera.lua')
| -rw-r--r-- | src/camera.lua | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/camera.lua b/src/camera.lua new file mode 100644 index 0000000..3283c0c --- /dev/null +++ b/src/camera.lua @@ -0,0 +1,41 @@ +local DEFAULT_CAMERA_SMOOTHING = 30 + +Cam = {} +Cam.__index = Cam + +function Cam.new(x, y) + local self = setmetatable({}, Cam) + + self.x = x or 0 + self.y = y or 0 + self.realx = self.x + self.realy = self.y + self.zoom = 1 + + self.smoothing = DEFAULT_CAMERA_SMOOTHING + + return self +end + +function Cam:update(dt) + self.realx = dlerp(self.realx, self.x, self.smoothing * dt) + self.realy = dlerp(self.realy, self.y, self.smoothing * dt) +end + +local active_cam = Cam.new() + +function get_active_camera() + return active_cam +end + +function set_active_camera(new_cam) + active_cam = new_cam +end + +function use_camera_transform() + local w, h = SCR_WIDTH / 2, SCR_HEIGHT / 2 + lg.scale(active_cam.zoom) + lg.translate( + -active_cam.realx + w / active_cam.zoom, + -active_cam.realy + h / active_cam.zoom) +end |
