public Model buildModel() {
- final float BASS_FLOOR = BassBox.EDGE_HEIGHT + BoothFloor.PLEXI_WIDTH;
// Shorthand helpers for specifying wiring more quickly
final Cube.Wiring WFL = Cube.Wiring.FRONT_LEFT;
final Cube.Wiring WRL = Cube.Wiring.REAR_LEFT;
final Cube.Wiring WRR = Cube.Wiring.REAR_RIGHT;
+ // Utility value if you need the height of a cube shorthand
final float CH = Cube.EDGE_HEIGHT;
+
+ // Positions for the bass box
+ final float BBY = BassBox.EDGE_HEIGHT + BoothFloor.PLEXI_WIDTH;
+ final float BBX = 56;
+ final float BBZ = 2;
+
// The model is represented as an array of towers. The cubes in the tower
// are represenented relatively. Each tower has an x, y, z reference position,
// The cubes automatically increment their y-position by Cube.EDGE_HEIGHT.
TowerMapping[] towerCubes = new TowerMapping[] {
- new TowerMapping(50, 0, 80, new CubeMapping[] {
- new CubeMapping(0, 0, WFL),
+ // DJ booth, from left to right
+ new TowerMapping(BBX, BBY, BBZ, new CubeMapping[] {
+ new CubeMapping(-7.25, 7.5, -25, WFR),
+ new CubeMapping(7.5, -15.75, 12, WRL),
+ }),
+ new TowerMapping(BBX, BBY, BBZ, new CubeMapping[] {
+ new CubeMapping(19.625, 5.375, -22, WFR),
+ new CubeMapping(8, -14.5, 10, WRR),
+ }),
+ new TowerMapping(BBX, BBY, BBZ, new CubeMapping[] {
+ new CubeMapping(48, 4.75, -35, WRL),
+ new CubeMapping(8, -15, 10, WRR),
}),
+ new TowerMapping(BBX, BBY, BBZ, new CubeMapping[] {
+ new CubeMapping(78.75, 3.75, -28, WRR),
+ new CubeMapping(8, -15, 10, WRR),
+ }),
+ new TowerMapping(BBX, BBY, BBZ, new CubeMapping[] {
+ new CubeMapping(104.75, 0, -27, WRL),
+ new CubeMapping(8, -15, 10, WFL),
+ }),
};
};
// The bass box!
- BassBox bassBox = new BassBox(56, 0, 2);
+ BassBox bassBox = new BassBox(BBX, 0, BBZ);
// The speakers!
List<Speaker> speakers = Arrays.asList(new Speaker[] {
+ // each speaker parameter is x, y, z, rotation, the left speaker comes first
new Speaker(-12, 6, 0, 15),
- new Speaker(TRAILER_WIDTH - Speaker.EDGE_WIDTH, 6, 6, -15)
+ new Speaker(TRAILER_WIDTH - Speaker.EDGE_WIDTH + 8, 6, 3, -15)
});
+ //////////////////////////////////////////////////////////////////////
+ // BENEATH HERE SHOULD NOT REQUIRE ANY MODIFICATION!!!! //
+ //////////////////////////////////////////////////////////////////////
+
// These guts just convert the shorthand mappings into usable objects
ArrayList<Tower> towerList = new ArrayList<Tower>();
ArrayList<Cube> tower;
return new Model(towerList, cubes, bassBox, speakers);
}
+/**
+ * This function maps the panda boards. We have an array of them, each has
+ * an IP address and a list of channels.
+ */
public PandaMapping[] buildPandaList() {
+ final int LEFT_SPEAKER = 0;
+ final int RIGHT_SPEAKER = 1;
+
return new PandaMapping[] {
new PandaMapping(
- "10.200.1.28", new ChannelMapping[] {
+ "10.200.1.29", new ChannelMapping[] {
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
new ChannelMapping(ChannelMapping.MODE_BASS),
- new ChannelMapping(ChannelMapping.MODE_FLOOR),
- new ChannelMapping(ChannelMapping.MODE_SPEAKER, 0),
- new ChannelMapping(ChannelMapping.MODE_SPEAKER, 1),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1 }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
+ new ChannelMapping(ChannelMapping.MODE_STRUTS_AND_FLOOR),
+ new ChannelMapping(ChannelMapping.MODE_SPEAKER, LEFT_SPEAKER),
+ new ChannelMapping(ChannelMapping.MODE_SPEAKER, RIGHT_SPEAKER),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
}),
new PandaMapping(
- "10.200.1.29", new ChannelMapping[] {
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
- new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),
+ "10.200.1.28", new ChannelMapping[] {
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
+ new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1, 2, 3, 4 }),
}),
};
}
class PandaMapping {
// How many channels are on the panda board
- public final static int CHANNELS_PER_BOARD = 13;
+ public final static int CHANNELS_PER_BOARD = 16;
// How many total pixels on the whole board
public final static int PIXELS_PER_BOARD = ChannelMapping.PIXELS_PER_CHANNEL * CHANNELS_PER_BOARD;
public static final int MODE_CUBES = 1;
public static final int MODE_BASS = 2;
public static final int MODE_SPEAKER = 3;
- public static final int MODE_FLOOR = 4;
+ public static final int MODE_STRUTS_AND_FLOOR = 4;
public static final int MODE_INVALID = 5;
public static final int NO_OBJECT = -1;
if (speakerIndex < 0 || speakerIndex >= glucose.model.speakers.size()) {
throw new RuntimeException("Invalid speaker channel mapping: " + speakerIndex);
}
- } else if ((mode == MODE_FLOOR) || (mode == MODE_BASS) || (mode == MODE_NULL)) {
+ } else if ((mode == MODE_STRUTS_AND_FLOOR) || (mode == MODE_BASS) || (mode == MODE_NULL)) {
if (rawObjectIndices.length > 0) {
throw new RuntimeException("Bass/floor/null mappings cannot specify object indices");
}