-
Notifications
You must be signed in to change notification settings - Fork 1
/
PygletCore.py
71 lines (49 loc) · 1.58 KB
/
PygletCore.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
import Config as Cfg
from Clouds import CloudChunk, CloudManager
import pyglet
from pyglet.gl import *
from pyglet.graphics import Batch
class CloudRenderer(CloudChunk):
def __init__(self, X, Generator):
super(CloudRenderer, self).__init__(X, Generator)
self.Batch = Batch()
def GenerateFinshed(self):
super(CloudRenderer, self).GenerateFinshed()
self.Batch.add(self.Length, GL_POINTS, None,
('v2i/static', self.Points),
('c4f/static', self.Colours)
)
def Draw(self, X):
super(CloudRenderer, self).Draw(X)
self.Batch.draw()
class CloudRenderManager(CloudManager):
def __init__(self):
super(CloudRenderManager, self).__init__(CloudRenderer)
class GameWindow(pyglet.window.Window):
def __init__(self, *args, **kwargs):
super(GameWindow, self).__init__(*args, **kwargs)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glPointSize(Cfg.PixelSize)
Width, Height = self.get_size()
glViewport(0, 0, Width, Height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(0, Width, Height, 0, 1, -1)
self.Width = float(Width)
self.Height = Height
self.Clouds = CloudRenderManager()
self.XPos = 0.0
self.XChange = 2.0
pyglet.clock.schedule_interval(self.Update, 1.0 / Cfg.Framerate)
def on_draw(self):
self.clear()
glLoadIdentity()
glTranslatef(-self.XPos, 0, 0)
X = int(self.XPos / Cfg.CloudWidth)
for CloudX in xrange(X, X + int(round(self.XPos / Cfg.CloudWidth)) + 3):
self.Clouds.GetObject(CloudX * Cfg.CloudWidth).Draw(self.XPos)
def Update(self, dt):
self.XPos += self.XChange
W= GameWindow()
pyglet.app.run()