}
}
+/**
+ * This shows how to iterate over towers, enumerated in the model.
+ */
+class TestTowerPattern extends SCPattern {
+ private final SawLFO towerIndex = new SawLFO(0, model.towers.size(), 1000*model.towers.size());
+
+ public TestTowerPattern(GLucose glucose) {
+ super(glucose);
+ addModulator(towerIndex).trigger();
+ towerIndex.setValue(9);
+ }
+
+ public void run(int deltaMs) {
+ println((int)towerIndex.getValuef());
+ int ti = 0;
+ for (Tower t : model.towers) {
+ for (Point p : t.points) {
+ colors[p.index] = color(
+ lx.getBaseHuef(),
+ 100,
+ max(0, 100 - 80*abs(ti - towerIndex.getValuef()))
+ );
+ }
+ ++ti;
+ }
+ }
+
+}
+
/**
* This is a demonstration of how to use the projection library. A projection
* creates a mutation of the coordinates of all the points in the model, creating
MappingTool(GLucose glucose, PandaMapping[] pandaMappings) {
super(glucose);
this.pandaMappings = pandaMappings;
- int totalChannels = 0;
- for (PandaMapping pm : pandaMappings) {
- totalChannels += pm.channelList.length;
- }
- numChannels = totalChannels;
+ numChannels = pandaMappings.length * PandaMapping.CHANNELS_PER_BOARD;
setChannel();
}
private void setChannel() {
- mappingChannelIndex = channelIndex;
- for (PandaMapping pm : pandaMappings) {
- if (mappingChannelIndex < pm.channelList.length) {
- activeMapping = pm;
- break;
- }
- mappingChannelIndex -= pm.channelList.length;
- }
+ mappingChannelIndex = channelIndex % PandaMapping.CHANNELS_PER_BOARD;
+ activeMapping = pandaMappings[channelIndex / PandaMapping.CHANNELS_PER_BOARD];
}
private int cubeInChannel(Cube c) {