-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcamera.py
More file actions
37 lines (31 loc) · 1.7 KB
/
camera.py
File metadata and controls
37 lines (31 loc) · 1.7 KB
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
#!/usr/bin/env python
from pygame import Rect
import util
import math
class Camera:
def __init__(self,pos,size):
self.real_pos = util.vec2(pos.x, pos.y)
self.lookat_pos = util.vec2(pos.x, pos.y)
self.center = util.vec2(size[0] / 2.0, size[1] / 2.0)
self.rect = Rect((0,0),size)
self.delta_threshold = 0.5
def update(self):
delta = util.vec2(self.lookat_pos.x - self.real_pos.x, self.lookat_pos.y - self.real_pos.y)
if (delta.x > self.center.x * self.delta_threshold):
movedelta = delta.x - self.center.x * (1.0 - self.delta_threshold)
self.real_pos = util.vec2(self.real_pos.x + movedelta / 10.0, self.real_pos.y)
elif (-delta.x > self.center.x * self.delta_threshold):
movedelta = -delta.x - self.center.x * (1.0 - self.delta_threshold)
self.real_pos = util.vec2(self.real_pos.x - movedelta / 10.0, self.real_pos.y)
if (delta.y > self.center.y * self.delta_threshold):
self.real_pos = util.vec2(self.real_pos.x, self.real_pos.y + 2)
elif (-delta.y > self.center.y * self.delta_threshold):
self.real_pos = util.vec2(self.real_pos.x, self.real_pos.y - 2)
"""delta = util.vec2(self.lookat_pos.x - self.real_pos.x, self.lookat_pos.y - self.real_pos.y)
amount = math.sqrt(delta.x * delta.x + delta.y * delta.y)
if (amount > 1.0 and amount < -1.0):
self.real_pos = util.vec2(self.real_pos.x + delta.x / 2.0, self.real_pos.y + delta.y / 2.0)"""
def set_lookat(self, pos):
self.lookat_pos = util.vec2(pos.x, pos.y)
def get_pos(self):
return util.vec2(self.real_pos.x - self.center.x, self.real_pos.y - self.center.y)