Changeset - 54cf7034bee0
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 20 months ago 2023-06-02 21:54:11
drewp@bigasterisk.com
EE don't abort compile on partial data
1 file changed with 16 insertions and 6 deletions:
0 comments (0 inline, 0 general)
light9/effect/sequencer/eval_faders.py
Show inline comments
 
@@ -43,33 +43,43 @@ class FaderEval:
 
        self.graph = graph
 
        self.lib = lib
 
        self.faders: List[Fader] = []
 

	
 
        self.graph.addHandler(self._compile)
 
        self.lastLoopSucceeded = False
 

	
 
    @COMPILE.time()
 
    def _compile(self) -> None:
 
        """rebuild our data from the graph"""
 
        self.faders = []
 
        for fader in self.graph.subjects(RDF.type, L9['Fader']):
 
            effect = typedValue(EffectUri, self.graph, fader, L9['effect'])
 
            setting = typedValue(Node, self.graph, fader, L9['setting'])
 
            setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr'])
 
            self.faders.append(Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr))
 
            try:
 
                self.faders.append(self._compileFader(fader))
 
            except ValueError:
 
                pass
 

	
 
        # this could go in a second, smaller addHandler call to avoid rebuilding Fader objs constantly
 
        for f in self.faders:
 
            setting = typedValue(Node, self.graph, f.uri, L9['setting'])
 
            f.value = typedValue(float, self.graph, setting, L9['value'])
 
            try:
 
                setting = typedValue(Node, self.graph, f.uri, L9['setting'])
 
            except ValueError:
 
                f.value = None
 
            else:
 
                f.value = typedValue(float, self.graph, setting, L9['value'])
 

	
 
    def _compileFader(self, fader: URIRef) -> Fader:
 
        effect = typedValue(EffectUri, self.graph, fader, L9['effect'])
 
        setting = typedValue(Node, self.graph, fader, L9['setting'])
 
        setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr'])
 
        return (Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr))
 

	
 
    def computeOutput(self) -> DeviceSettings:
 
        faderEffectOutputs: List[DeviceSettings] = []
 
        now = UnixTime(time.time())
 
        for f in self.faders:
 
            try:
 
                if f.value is None:
 
                    log.warning(f'{f.value=}; should be set during _compile. Skipping {f.uri}')
 
                    continue
 
                effectSettings = EffectSettings(self.graph, [(f.effect, f.setEffectAttr, f.value)])
 

	
 
                ds = f.ee.compute(now, effectSettings)
0 comments (0 inline, 0 general)