From 5febdd41b148379392b41f5848d0235c01d6ef0c Mon Sep 17 00:00:00 2001 From: nhydock Date: Mon, 1 Aug 2011 13:55:01 -0400 Subject: [PATCH] Updating layer and effects have been moved out of the layer's render method so then Groups can cleanly inject their values into their layers --- src/Rockmeter.py | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/src/Rockmeter.py b/src/Rockmeter.py index 19e4e5237..226e0e66b 100644 --- a/src/Rockmeter.py +++ b/src/Rockmeter.py @@ -239,10 +239,6 @@ def updateLayer(self, playerNum): self.position = position def render(self, visibility, playerNum): - - self.updateLayer(playerNum) - for effect in self.effects: - effect.update() #don't try to render an image layer if the texture doesn't even exist if not self.drawing: @@ -318,11 +314,6 @@ def updateLayer(self, playerNum): self.position = position def render(self, visibility, playerNum): - w, h, = self.stage.engine.view.geometry[2:4] - - self.updateLayer(playerNum) - for effect in self.effects: - effect.update() position = self.position alignment = self.alignment @@ -387,11 +378,6 @@ def updateLayer(self, playerNum): super(CircleLayer, self).updateLayer(playerNum) def render(self, visibility, playerNum): - w, h, = self.stage.engine.view.geometry[2:4] - - self.updateLayer(playerNum) - for effect in self.effects: - effect.update() #don't try to render image layer if the texture doesn't even exist if not self.drawing: @@ -864,17 +850,16 @@ def render(self, visibility, playerNum): for effect in self.effects: effect.update() - glPushMatrix() - glTranslatef(self.position[0], self.position[1], 1) - glScalef(self.scale[0], self.scale[1], 1) - glRotatef(-self.angle, 0, 0, 1) - glColor4f(*self.color) - for layer in self.layers.values(): + layer.updateLayer(playerNum) + for effect in layer.effects: + effect.update() + layer.position = [layer.position[i] + self.position[i] for i in range(2)] + layer.scale = [layer.scale[i]*self.scale[i] for i in range(2)] + layer.angle *= self.angle + layer.color = [layer.color[i]*self.color[i] for i in range(4)] layer.render(visibility, playerNum) - glPopMatrix() - class Rockmeter(ConfigGetMixin): @@ -1112,10 +1097,14 @@ def render(self, visibility): self.engine.view.setViewportHalf(self.scene.numberOfGuitars,p) else: self.engine.view.setViewportHalf(1,0) - for layer in self.layersForRender.values(): - layer.render(visibility, p) for group in self.layerGroups.values(): group.render(visibility, p) + for layer in self.layersForRender.values(): + layer.updateLayer(p) + for effect in layer.effects: + effect.update() + layer.render(visibility, p) + self.engine.view.setViewportHalf(1,0) for layer in self.sharedlayers: