Changeset - 9f18263a1dcd
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 20 months ago 2023-05-30 02:36:49
drewp@bigasterisk.com
effect don't panic if your triples arent there yet
1 file changed with 6 insertions and 1 deletions:
0 comments (0 inline, 0 general)
light9/effect/effecteval.py
Show inline comments
 
@@ -74,31 +74,36 @@ def _8bit(f):
 
@dataclass
 
class EffectEval2:
 
    graph: SyncedGraph
 
    uri: EffectUri
 

	
 
    effectFunction: Optional[URIRef] = None
 
    isEffect = False
 

	
 
    def __post_init__(self):
 
        self.graph.addHandler(self._compile)
 
        self.effectFunction = L9['todo']
 

	
 
    def _compile(self):
 
        if not self.graph.contains((self.uri, RDF.type, L9['Effect'])):
 
            raise ValueError(f'{self.uri} not an :Effect')
 
            self.isEffect = False
 
            return
 
        self.isEffect = True
 

	
 
        self.function = effect_scale
 
        devs = []
 
        for s in self.graph.objects(self.uri, L9['setting']):
 
            d = typedValue(DeviceUri, self.graph, s, L9['device'])
 
            da = typedValue(DeviceAttr, self.graph, s, L9['deviceAttr'])
 
            v = typedValue(VTUnion, self.graph, s, L9['value'])
 
            devs.append((d, da, v))
 
        self.devs = DeviceSettings(self.graph, devs)
 

	
 
    def compute(self, inputs: EffectSettings) -> DeviceSettings:
 
        if not self.isEffect:
 
            return DeviceSettings(self.graph, [])
 

	
 
        s = 0
 
        for e, ea, v in inputs.asList():
 
            if not isinstance(v, float):
 
                raise TypeError
 
            if ea == L9['strength']:
0 comments (0 inline, 0 general)