-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.py
executable file
·140 lines (105 loc) · 4.31 KB
/
test.py
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/python3
import numpy
import GameEngine
from GameEngine.Object import Object3D as Object3D
from GameEngine.Text import Text as Text
class GameLogicOverride(GameEngine.GameLogic):
def __init__(self, gameEngine):
super().__init__(gameEngine)
self.window = GameEngine.GameWindow(1600, 800)
# Initialise cameras
self.cameras = []
screen0 = GameEngine.GameScreen(self.window, 0, 0, 800, 800)
screen1 = GameEngine.GameScreen(self.window, 800, 0, 800, 800)
self.cameras.append(GameEngine.GameCamera(screen0, (0, 0, -20)))
self.cameras.append(GameEngine.GameCamera(screen1, (0, 0, -20), 120))
for i, cam in enumerate(self.cameras):
cam.setName("Cam{:}".format(i))
self.activeCamera = self.cameras[0]
# Initialise GameObjects
self.cube = Object3D.Cube((0, 0, 0), (10, 10, 10))
self.change = 100
def tick(self):
# Detect collision
self.handleKeyInputs()
def handleKeyInputs(self):
shift = False
for event in self.events:
if event.type == GameEngine.KEYPRESSED:
if event.key == GameEngine.K_LSHIFT:
shift = True
for event in self.events:
if event.type == GameEngine.KEYPRESSED:
if shift:
if event.key == GameEngine.K_a:
self.activeCamera.addX(-self.change * self.gameEngine.getDelta())
elif event.key == GameEngine.K_d:
self.activeCamera.addX(self.change * self.gameEngine.getDelta())
elif event.key == GameEngine.K_w:
self.activeCamera.addY(-self.change * self.gameEngine.getDelta())
elif event.key == GameEngine.K_s:
self.activeCamera.addY(self.change * self.gameEngine.getDelta())
elif event.key == GameEngine.K_f:
self.activeCamera.addZ(-self.change * self.gameEngine.getDelta())
elif event.key == GameEngine.K_r:
self.activeCamera.addZ(self.change * self.gameEngine.getDelta())
else:
if event.key == GameEngine.K_a:
self.cube.addDim((-self.change * self.gameEngine.getDelta(), 0, 0))
elif event.key == GameEngine.K_d:
self.cube.addDim((self.change * self.gameEngine.getDelta(), 0, 0))
elif event.key == GameEngine.K_w:
self.cube.addDim((0, self.change * -self.gameEngine.getDelta(), 0))
elif event.key == GameEngine.K_s:
self.cube.addDim((0, self.change * self.gameEngine.getDelta(), 0))
elif event.key == GameEngine.K_f:
self.cube.addDim((0, 0, -self.change * self.gameEngine.getDelta()))
elif event.key == GameEngine.K_r:
self.cube.addDim((0, 0, self.change * self.gameEngine.getDelta()))
elif event.key == GameEngine.K_UP:
self.cube.addPos((0, -self.change * self.gameEngine.getDelta(), 0))
elif event.key == GameEngine.K_DOWN:
self.cube.addPos((0, self.change * self.gameEngine.getDelta(), 0))
elif event.key == GameEngine.K_LEFT:
self.cube.addPos((-self.change * self.gameEngine.getDelta(), 0, 0))
elif event.key == GameEngine.K_RIGHT:
self.cube.addPos((self.change * self.gameEngine.getDelta(), 0, 0))
elif event.type == GameEngine.KEYDOWN:
if shift: pass
else:
if event.key == GameEngine.K_p:
self.activeCamera.debug = not self.activeCamera.debug
elif event.type == GameEngine.MOUSEBUTTONDOWN:
for camera in self.cameras:
screen = camera.getScreen()
if (event.pos[0] > screen.getX()
and event.pos[0] < screen.getX() + screen.getWidth()
and event.pos[1] > screen.getY()
and event.pos[1] < screen.getY() + screen.getHeight()):
self.activeCamera = camera
break
def draw(self):
self.window.clear()
for camera in self.cameras:
camera.clear()
counts = [0, 0]
for i, camera in enumerate(self.cameras):
counts[i] += camera.drawMesh(self.cube, width=0 if i in [0] else 1, hideInvisible=True, antialias=True)
#print("Triangles: Cam0 -> {}, Cam1 -> {}".format(counts[0], counts[1]))
for camera in self.cameras:
camera.update()
# Draw FPS
color = (255, 255, 255)
setFPS = self.gameEngine.getFramesPerSecond()
if setFPS - setFPS * 0.1 > self.gameEngine.getActualFPS():
color = (255, 0, 0)
fps = Text.text("{}".format(int(numpy.round(self.gameEngine.getActualFPS()))), "Arial", 48, color=color)
self.window.blit(fps, (self.window.getWidth() - fps.get_width(), 0))
self.window.update()
def quit(self):
print("Bye")
return True
def main():
game = GameEngine.GameEngine(GameLogicOverride, framesPerSecond=30)
game.run()
main()