-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcamera.go
44 lines (38 loc) · 1.06 KB
/
camera.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"github.com/faiface/pixel"
"github.com/faiface/pixel/pixelgl"
)
type Camera struct {
Window *pixelgl.Window
Pos pixel.Vec
Speed float64
Zoom, ZoomSpeed float64
}
func NewCamera(win *pixelgl.Window) *Camera {
return &Camera{win, pixel.ZV, 1.0, 1, 1.1}
}
func (c *Camera) GetMatrix() pixel.Matrix {
return pixel.IM.Scaled(c.Pos, c.Zoom).Moved(c.Window.Bounds().Center().Sub(c.Pos))
}
func (c *Camera) Follow(p pixel.Vec) {
dist := p.Sub(c.Pos).Len()
if dist > 8 {
c.Pos = pixel.Lerp(c.Pos, p, c.Speed*engine.dt)
}
}
func (c *Camera) Update() {
// if c.Window.Pressed(pixelgl.KeyLeft) {
// c.Pos.X -= c.Speed * engine.dt * (1.0 / c.Zoom)
// }
// if c.Window.Pressed(pixelgl.KeyRight) {
// c.Pos.X += c.Speed * engine.dt * (1.0 / c.Zoom)
// }
// if c.Window.Pressed(pixelgl.KeyUp) {
// c.Pos.Y -= c.Speed * engine.dt * (1.0 / c.Zoom)
// }
// if c.Window.Pressed(pixelgl.KeyDown) {
// c.Pos.Y += c.Speed * engine.dt * (1.0 / c.Zoom)
// }
// c.Zoom *= math.Pow(c.ZoomSpeed, c.Window.MouseScroll().Y)
}