diff --git a/punyverse/game.py b/punyverse/game.py index bea4452..7ac6469 100644 --- a/punyverse/game.py +++ b/punyverse/game.py @@ -47,9 +47,9 @@ class Applet(pyglet.window.Window): texture.init() if hasattr(self.config, '_attribute_names'): - info = [' %-17s %s' % (key + ':', getattr(self.config, key)) + info = [' %-22s %s' % (key + ':', getattr(self.config, key)) for key in self.config._attribute_names] - info = ['%-25s %-25s' % group for group in + info = ['%-30s %-30s' % group for group in izip_longest(info[::2], info[1::2], fillvalue='')] info = 'OpenGL configuration:\n' + '\n'.join(info) else: @@ -57,15 +57,21 @@ class Applet(pyglet.window.Window): self.loaded = False self.__load_started = False - self._loading_phase = pyglet.text.Label(font_name='Consolas', font_size=20, x=10, y=self.height - 100, - color=(255, 255, 255, 255), width=self.width - 20, halign='center', - multiline=True, text='Punyverse is starting...') - self._loading_label = pyglet.text.Label(font_name='Consolas', font_size=16, x=10, y=self.height - 200, - color=(255, 255, 255, 255), width=self.width - 20, halign='center', - multiline=True) - self._info_label = pyglet.text.Label(font_name='Consolas', font_size=13, x=10, y=self.height - 320, - color=(255, 255, 255, 255), width=self.width - 20, - multiline=True, text=info) + self._loading_phase = pyglet.text.Label( + font_name='Consolas', font_size=20, x=10, y=self.height - 80, + color=(255, 255, 255, 255), width=self.width - 20, align='center', + multiline=True, text='Punyverse is starting...' + ) + self._loading_label = pyglet.text.Label( + font_name='Consolas', font_size=16, x=10, y=self.height - 150, + color=(255, 255, 255, 255), width=self.width - 20, align='center', + multiline=True + ) + self._info_label = pyglet.text.Label( + font_name='Consolas', font_size=13, x=10, y=self.height - 250, + color=(255, 255, 255, 255), width=self.width - 20, + multiline=True, text=info + ) pyglet.clock.schedule_once(self.load, 0) def load(self, *args, **kwargs): @@ -368,7 +374,7 @@ class Applet(pyglet.window.Window): self._loading_phase.draw() self._loading_label.draw() if progress is not None: - progress_bar(10, self.height - 240, self.width - 20, 50, progress) + progress_bar(10, self.height - 170, self.width - 20, 50, progress) self._info_label.draw() def on_draw(self, glMatrixBuffer=GLfloat * 16): @@ -399,7 +405,10 @@ class Applet(pyglet.window.Window): pitch, yaw, roll = entity.rotation with glMatrix(), glRestore(GL_CURRENT_BIT): - glTranslatef(x, y, z) + if entity.background: + glTranslatef(c.x, c.y, c.z) + else: + glTranslatef(x, y, z) glRotatef(pitch, 1, 0, 0) glRotatef(yaw, 0, 1, 0) glRotatef(roll, 0, 0, 1) @@ -482,5 +491,4 @@ class Applet(pyglet.window.Window): cx, cy = width / 2, height / 2 glColor4f(0, 1, 0, 1) circle(10, 20, (cx, cy)) - glPopAttrib() frustrum() diff --git a/punyverse/glgeom.py b/punyverse/glgeom.py index 24020f4..a8b5dde 100644 --- a/punyverse/glgeom.py +++ b/punyverse/glgeom.py @@ -140,7 +140,7 @@ def flare(rinner, router, res, prob, tex): last_y = y -def sphere(r, lats, longs, tex, lighting=True, fv4=GLfloat * 4): +def sphere(r, lats, longs, tex, lighting=True, fv4=GLfloat * 4, inside=False): """ Sphere function from the OpenGL red book. """ @@ -152,7 +152,7 @@ def sphere(r, lats, longs, tex, lighting=True, fv4=GLfloat * 4): gluQuadricNormals(sphere, GLU_SMOOTH) glEnable(GL_CULL_FACE) - glCullFace(GL_BACK) + glCullFace(GL_FRONT if inside else GL_BACK) glEnable(GL_TEXTURE_2D) if lighting: glDisable(GL_BLEND) diff --git a/punyverse/world.py b/punyverse/world.py index e4f8194..4b1a40f 100644 --- a/punyverse/world.py +++ b/punyverse/world.py @@ -179,9 +179,11 @@ class World(object): object_id = compile(colourball, radius, division, division, texture) else: if self.options.get('normal', False) and 'normal' in info: - object_id = compile(normal_sphere, radius, division, texture, info['normal'], lighting=lighting) + object_id = compile(normal_sphere, radius, division, texture, + info['normal'], lighting=lighting, inside=background) else: - object_id = compile(sphere, radius, division, division, texture, lighting=lighting) + object_id = compile(sphere, radius, division, division, texture, + lighting=lighting, inside=background) elif 'model' in info: scale = info.get('scale', 1) object_id = model_list(load_model(info['model']), info.get('sx', scale), info.get('sy', scale), @@ -268,4 +270,4 @@ class World(object): self.callback('Loading objects (%d of %d)...' % (self._current_object, self._objects), message, float(self._current_object) / self._objects) self._body(satellite, info, object) - self._current_object += 1 \ No newline at end of file + self._current_object += 1