class Renderer: """ Renders the currently active layers and manages transitions between layer lists. Also applies a gamma correction layer after everything else is rendered. At the moment, this class does one of two things: -Calls render on a fade object if one exists -Otherwise, renders a list of active layers directly """ def __init__(self, layers=None, gamma=2.2): self.activeLayers = layers self.fade = None self.gammaLayer = GammaLayer(gamma) def render(self, model, params, frame): if self.fade: self.fade.render(model, params, frame) # if the fade is finished, grab its end layers and just render those if self.fade.done: self.activeLayers = self.fade.endLayers self.fade = None elif self.activeLayers: for layer in self.activeLayers: layer.render(model, params, frame) self.gammaLayer.render(model, params, frame) def setFade(self, duration, nextLayers1, nextLayers2=None): # TODO check for wonky behavior when one fade is set while another is still in progress if nextLayers2: self.fade = TwoStepLinearFade(self.activeLayers, nextLayers1, nextLayers2, duration) else: self.fade = LinearFade(self.activeLayers, nextLayers1, duration)
def __init__(self, layers=None, gamma=2.2): self.activeLayers = layers self.fade = None self.gammaLayer = GammaLayer(gamma)