- for (int index : points) {
- int c = (index < 0) ? 0 : colors[index];
- byte r = (byte) ((c >> 16) & 0xFF);
- byte g = (byte) ((c >> 8) & 0xFF);
- byte b = (byte) ((c) & 0xFF);
- packet[len++] = 0; // alpha channel, unused but makes for 4-byte alignment
- packet[len++] = r;
- packet[len++] = g;
- packet[len++] = b;
-
- // Flush once packet is full buffer size
- if (len >= packet.length) {
- sendPacket(packetNum++);
- len = 0;
- }
+ for (ChannelMapping channel : pm.channelList) {
+ for (int j: channel.objectIndices) {
+ if (j > 0) {
+ Cube cube = _model.getCubeByRawIndex(j);
+ for (LXPoint p : cube.points) {
+ int c = (p.index < 0) ? 0 : colors[p.index];
+ byte r = (byte) ((c >> 16) & 0xFF);
+ byte g = (byte) ((c >> 8) & 0xFF);
+ byte b = (byte) ((c) & 0xFF);
+ packet[len++] = (byte) 0; // alpha channel, unused but makes for 4-byte alignment
+ packet[len++] = (byte) r;
+ packet[len++] = (byte) g;
+ packet[len++] = (byte) b;
+ }
+ }
+ }
+ // println("Packet number: " + packetNum);
+ sendPacket(frameNum, packetNum++);
+ len = 0;