aboutsummaryrefslogtreecommitdiff
path: root/chuck
diff options
context:
space:
mode:
Diffstat (limited to 'chuck')
-rw-r--r--chuck/OSCGraphicsLayer.ck13
-rw-r--r--chuck/OSCGraphicsPort.ck15
2 files changed, 20 insertions, 8 deletions
diff --git a/chuck/OSCGraphicsLayer.ck b/chuck/OSCGraphicsLayer.ck
index ffd7fe7..9aed84e 100644
--- a/chuck/OSCGraphicsLayer.ck
+++ b/chuck/OSCGraphicsLayer.ck
@@ -26,10 +26,13 @@ public class OSCGraphicsLayer {
int index;
fun void
- tick(float in)
+ tick(float in, float prev)
{
in $ int => geo[index];
- geo => layer.geo;
+
+ /* optimize: avoid sending unnecessary messages */
+ if (geo[index] != (prev $ int))
+ geo => layer.geo;
}
}
fun OSCGraphicsPort @
@@ -64,9 +67,11 @@ public class OSCGraphicsLayer {
OSCGraphicsLayer @layer;
fun void
- tick(float in)
+ tick(float in, float prev)
{
- in => layer.alpha;
+ /* optimize: alpha set as float, but there are only 255 alpha levels */
+ if ((in*255) $ int != (prev*255) $ int)
+ in => layer.alpha;
}
}
fun OSCGraphicsPort @
diff --git a/chuck/OSCGraphicsPort.ck b/chuck/OSCGraphicsPort.ck
index b633aac..9c81e62 100644
--- a/chuck/OSCGraphicsPort.ck
+++ b/chuck/OSCGraphicsPort.ck
@@ -2,9 +2,14 @@ public class OSCGraphicsPort extends Chubgraph {
inlet => blackhole;
inlet => outlet;
- 50::ms => dur poll_interval;
+ second/20 => dur poll_interval;
- fun void tick(float in) {}
+ fun void tick(float in) {} /* virtual */
+ fun void
+ tick(float in, float prev) /* virtual */
+ {
+ in => tick;
+ }
fun void
poll()
@@ -12,8 +17,10 @@ public class OSCGraphicsPort extends Chubgraph {
inlet.last() => float prev;
while (poll_interval => now)
- if (inlet.last() != prev)
- inlet.last() => prev => tick;
+ if (inlet.last() != prev) {
+ tick(inlet.last(), prev);
+ inlet.last() => prev;
+ }
}
spork ~ poll();
}