/* * // ## Neighbor Add ## * // This method is a handler for the NeighborAdd event. It is triggered when * // two cubes are placed side by side. * // * // Cube1 and cube2 are the two cubes that are involved in this neighboring. * // The two cube arguments can be in any order; if your logic depends on * // cubes being in specific positions or roles, you need to add logic to * // this handler to sort the two cubes out. * // * // Side1 and side2 are the sides that the cubes neighbored on. * private void OnNeighborAdd (Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) * { * CubeWrapper wrapper1 = (CubeWrapper)cube1.userData; * CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; * Log.Debug ("Neighbor add: {0}.{1} <-> {2}.{3}", wrapper1.mNumber, side1, wrapper2.mNumber, side2); * * if (wrapper2.mNumber < wrapper1.mNumber) { * CubeWrapper wrapper3 = cube1.userData; * wrapper2 = wrapper1; * wrapper1 = wrapper3; * } * * * * //s'arranger pour savoir quel cube est le premier, celui qui a le plus petit nombre, devient wrapper1 * if (cube1 == SOURCE) { * switch (cube2){ * case FILTER: * break; * } * * * } * * * if (wrapper1.mNumber == 1) { * if (wrapper2.mNumber == 2) { * * } * } * * if (wrapper1.mNumber== 2) { * if (wrapper2.mNumber == 3) { * cube2.Image("all",0,0,0,ALL_LFO,Cube.SCREEN_WIDTH,Cube.SCREEN_HEIGHT,0,0); * } * } * * cube1.Paint(); * cube2.Paint(); * /* * CubeWrapper wrapper = (CubeWrapper)cube1.userData; * if (wrapper != null) { * // Here we set our wrapper's rotation value so that the image gets * // drawn with its top side pointing towards the neighbor cube. * // * // Cube.Side is an enumeration (TOP, LEFT, BOTTOM, RIGHT, NONE). The * // values of the enumeration can be cast to integers by counting * // counterclockwise: * // * // * TOP = 0 * // * LEFT = 1 * // * BOTTOM = 2 * // * RIGHT = 3 * // * NONE = 4 * wrapper.mRotation = (int)side1; * wrapper.mNeedDraw = true; * } * * wrapper = (CubeWrapper)cube2.userData; * if (wrapper != null) { * wrapper.mRotation = (int)side2; * wrapper.mNeedDraw = true; * * } * * // ## Neighbor Remove ## * // This method is a handler for the NeighborRemove event. It is triggered * // when two cubes that were neighbored are separated. * // * // The side arguments for this event are the sides that the cubes * // _were_ neighbored on before they were separated. If you check the * // current state of their neighbors on those sides, they should of course * // be NONE. * private void OnNeighborRemove (Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) * { * CubeWrapper wrapper1 = (CubeWrapper)cube1.userData; * CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; * * if (wrapper2.mNumber < wrapper1.mNumber) { * CubeWrapper wrapper3 = cube1.userData; * wrapper2 = wrapper1; * wrapper1 = wrapper3; * } * Log.Debug ("Neighbor remove: {0}.{1} <-> {2}.{3}", wrapper1.mNumber, side1, wrapper2.mNumber, side2); * * if (cube1 == SOURCE) { * switch (cube2){ * case FILTER: * break; * } * * * } * * * if (wrapper1.mNumber == 1) { * if (wrapper2.mNumber == 2) { * cube2.Image("all",0,0,0,ALL_FILTERBASIC,Cube.SCREEN_WIDTH,Cube.SCREEN_HEIGHT,0,0); * cube1.Image("all",0,0,0,ALL_SOURCE,Cube.SCREEN_WIDTH,Cube.SCREEN_HEIGHT,0,0); * //message OSC, son de base * } * } * * if (wrapper1.mNumber == 2) { * if (wrapper2.mNumber == 3) { * cube2.Image("all",0,0,0,ALL_LFOBASIC,Cube.SCREEN_WIDTH,Cube.SCREEN_HEIGHT,0,0); * // message OSC, son filtré simplement * //savoir si on sait faire un "ctrl+z" sur KYMA, alors on reprend juste le son précédent * //si pas -> switch * } * } * * cube1.Paint(); * cube2.Paint(); * * /* CubeWrapper wrapper = (CubeWrapper)cube1.userData; * if (wrapper != null) { * wrapper.mScale = 1; * wrapper.mRotation = 0; * wrapper.mNeedDraw = true; * } * * wrapper = (CubeWrapper)cube2.userData; * if (wrapper != null) { * wrapper.mScale = 1; * wrapper.mRotation = 0; * wrapper.mNeedDraw = true; * } * } */ private void OnNeighborAdd(Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) { CubeWrapper wrapper1 = (CubeWrapper)cube1.userData; CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; if (wrapper2.mNumber < wrapper1.mNumber) { CubeWrapper wrapper3 = (CubeWrapper)cube2.userData; wrapper2 = wrapper1; wrapper1 = wrapper3; Cube cuby; cuby = cube2; cube2 = cube1; cube1 = cuby; } Cube[] connected = CubeHelper.FindConnected(cube1); foreach (Cube cuby in connected) { Log.Debug("connected {0}", connected); } if (connected.Length > 1) { foreach (Cube cubelook in connected) { CubeWrapper wrapper4 = (CubeWrapper)cubelook.userData; if (wrapper4.mNumber == 1) { wrapper2.mIsconnected = true; wrapper2.mHaschanged = true; mNeedCheck = true; Log.Debug("on a bien changé le connected"); } } } mNeedCheck = true; }
private void OnNeighborRemove(Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) { bool sourceishere = false; bool sourceishere2 = false; //the "remove part" is a little bit more tricky because we have to check which part stays with the source /* * CubeWrapper wrapper1 = (CubeWrapper)cube1.userData; * CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; * * if (wrapper2.mNumber < wrapper1.mNumber) * { * CubeWrapper wrapper3 = (CubeWrapper)cube2.userData; * wrapper2 = wrapper1; * wrapper1 = wrapper3; * * Cube cuby = Cube; * cuby = cube2; * cube2 = cube1; * cube1 = cuby; * } */ Cube[] connected = CubeHelper.FindConnected(cube1); Cube[] connected2 = CubeHelper.FindConnected(cube2); foreach (Cube cubelook4 in connected) { CubeWrapper wrapper4 = (CubeWrapper)cubelook4.userData; if (wrapper4.mNumber == 1) { //we check if the source is in this part, and if it is the case, everycube in the group is connected sourceishere = true; } } foreach (Cube cubelook2 in connected2) { CubeWrapper wrapper4 = (CubeWrapper)cubelook2.userData; if (wrapper4.mNumber == 1) { //we check if the source is in this part, and if it is the case, everycube in the group is connected sourceishere2 = true; } } if (sourceishere) { foreach (Cube cubelook3 in connected) { CubeWrapper wrapper5 = (CubeWrapper)cubelook3.userData; wrapper5.mIsconnected = true; //if it is not the case, they are not connected wrapper5.mHaschanged = true; } foreach (Cube cubelook3 in connected2) { CubeWrapper wrapper5 = (CubeWrapper)cubelook3.userData; wrapper5.mIsconnected = false; //if it is not the case, they are not connected wrapper5.mHaschanged = true; } } if (sourceishere2) { foreach (Cube cubelook3 in connected2) { CubeWrapper wrapper5 = (CubeWrapper)cubelook3.userData; wrapper5.mIsconnected = true; //if it is not the case, they are not connected wrapper5.mHaschanged = true; } foreach (Cube cubelook3 in connected) { CubeWrapper wrapper5 = (CubeWrapper)cubelook3.userData; wrapper5.mIsconnected = false; //if it is not the case, they are not connected wrapper5.mHaschanged = true; } } /*foreach (Cube cubelook2 in connected2) * { * CubeWrapper wrapper4 = (CubeWrapper)cubelook2.userData; * * if (wrapper4.mNumber == 1) * { //we check if the source is in this part, and if it is the case, everycube in the group is connected * foreach (Cube cubelook3 in connected2) * { * CubeWrapper wrapper5 = (CubeWrapper)cubelook3.userData; * wrapper5.mIsconnected = true; * sourceishere = true; * } * } * }*/ mNeedCheck = true; }