@@ -883,9 +883,14 @@ def process_channels(self, dmx_mode_channels, channels):
883
883
):
884
884
new_channel ["cached_channels" ][str (dmx_channel .dmx_break )] = {}
885
885
for ch_of in new_channel .offsets :
886
- new_channel ["cached_channels" ][str (dmx_channel .dmx_break )][
887
- str (ch_of )
888
- ] = None
886
+ if ch_of > 0 :
887
+ new_channel ["cached_channels" ][str (dmx_channel .dmx_break )][
888
+ str (ch_of )
889
+ ] = None
890
+ # channel offsets are not good, we will need channel node and store final value
891
+ # together with attribute, physical value and slot index value
892
+ # this is needed because many channels operate together (pan+tilt, r+g+b,...)
893
+ print ("adding channel to cached" , ch_of )
889
894
890
895
else :
891
896
# virtual channels are 8 bit now
@@ -1282,12 +1287,11 @@ def render(self, skip_cache=False, current_frame=None):
1282
1287
# check if channel or other mode dependent channels are the same as in the cache
1283
1288
for cached_break , cached_channels in channel ["cached_channels" ].items ():
1284
1289
for cached_channel in cached_channels .keys ():
1285
- print ("channel" , cached_channel , cached_break )
1286
1290
store_val = dmx_data [int (cached_break )].get (
1287
1291
int (cached_channel ), None
1288
1292
)
1289
1293
print (
1290
- f"{ channel .attribute } : { store_val = } { cached_channels [cached_channel ]= } "
1294
+ f"{ channel .attribute } : { store_val = } { cached_channels [cached_channel ]= } { cached_channel = } "
1291
1295
)
1292
1296
if store_val != cached_channels [cached_channel ]:
1293
1297
channel_cached_already = False
@@ -1851,6 +1855,7 @@ def updateRGB(
1851
1855
if geometry is not None :
1852
1856
geometry = geometry .replace (" " , "_" )
1853
1857
DMX_Log .log .info (("color change for geometry" , geometry , colors ))
1858
+ print ("colors" , colors )
1854
1859
colors = [
1855
1860
c if c is not None else 0 for c in colors
1856
1861
] # replace None with 0, can happen if someone maps colors across geometries...
0 commit comments