// ## 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. public void OnNeighborRemove(Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) { CubeWrapper wrapper = (CubeWrapper)cube1.userData; CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; if (wrapper != null) { wrapper.mNeedTilt = false; //wrapper.mNeedFlip = false; Log.Debug("In OnNeighborRemove"); } if (wrapper2 != null) { wrapper2.mNeedTilt = false; //wrapper.mNeedFlip = false; Log.Debug("In OnNeighborRemove"); } //if (wrapper.eColiColor == "blue") //{ // _client.SendPhoto("Blue"); //} //else if (wrapper.eColiColor == "red") //{ // _client.SendPhoto("Red"); //} //else if (wrapper.eColiColor == "yellow") //{ // _client.SendPhoto("Yellow"); //} }
// ## 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) { Log.Debug("Neighbor add: {0}.{1} <-> {2}.{3}", cube1.UniqueId, side1, cube2.UniqueId, side2); 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; } //TODO: Siegüberprüfung: Cube[] row = CubeHelper.FindRow(CubeSet); if (row.Length == totalCubes) { Log.Debug("6 connected"); //found = true; //int lastId = -1; //foreach (Cube cube in row) { // CubeWrapper wrapper = (CubeWrapper)cube.userData; // if (wrapper.mIndex < lastId) // found = false; // lastId = wrapper.mIndex; // } } }
/* * // ## 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; }
// ## 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) { Log.Debug("Neighbor remove: {0}.{1} <-> {2}.{3}", cube1.UniqueId, side1, cube2.UniqueId, side2); 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; } }
// ## 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. // If two cubes are neighboring each other, raise the mNeedTilt flag (see the OnTilt method). private void OnNeighborAdd(Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2) { Log.Debug("In neighbor method"); CubeWrapper wrapper = (CubeWrapper)cube1.userData; CubeWrapper wrapper2 = (CubeWrapper)cube2.userData; //If neither CubeWrappers are null... if (wrapper != null && wrapper2 != null) { string wId = wrapper.mCube.UniqueId; string w2Id = wrapper2.mCube.UniqueId; #region If colored and plasmid cubes become neighbors if (wrapper.mCubeType == 0 && wrapper2.mCubeType == 1) { Log.Debug("wrapper is 0 and wrapper2 is 1"); //reorients cubes - if cube1 is the color cube and cube2 is the plasmid cube if (cube1.Neighbors.SideOf(cube2) != Cube.Side.BOTTOM && cube2.Neighbors.SideOf(cube1) != Cube.Side.TOP) { Cube.Side sidePlasmid = cube1.Neighbors.SideOf(cube2); //defines side neighboring cube is on Cube.Side sideColor = cube2.Neighbors.SideOf(cube1); //defines side of neighbor original cube is adjacent to #region reorients plasmid cube if (sideColor == Cube.Side.BOTTOM) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.TOP; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.BOTTOM; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.LEFT; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.RIGHT; } } if (sideColor == Cube.Side.RIGHT) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.LEFT; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.RIGHT; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.BOTTOM; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.TOP; } } if (sideColor == Cube.Side.LEFT) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.RIGHT; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.LEFT; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.TOP; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.BOTTOM; } } #endregion #region reorients color cube if (sidePlasmid == Cube.Side.LEFT) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.LEFT; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.RIGHT; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.BOTTOM; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.TOP; } } if (sidePlasmid == Cube.Side.RIGHT) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.RIGHT; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.LEFT; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.BOTTOM; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.TOP; } } if (sidePlasmid == Cube.Side.TOP) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.TOP; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.BOTTOM; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.RIGHT; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.LEFT; } } #endregion //redraws both cubes wrapper.DrawColoredCube(); wrapper2.DrawPlasmidCube(); } //Log.Debug("1 Neighbors: Colored and Plasmid"); if (wrapper.mCube.Neighbors.Bottom == cube2) { Log.Debug("1 Neighbors: Colored and Plasmid"); //wrapper.cCubeStringId = wId; wrapper2.cCubeStringId = wId; wrapper.pCubeStringId = w2Id; //wrapper2.pCubeStringId = w2Id; } }//end if wrapper has colored cube and wrapper2 has plasmid cube if (wrapper.mCubeType == 1 && wrapper2.mCubeType == 0) { Log.Debug("wrapper2 is 0 and wrapper is 1"); //reorients cube - if cube2 is the color cube and cube1 is the plasmid cube if (cube2.Neighbors.SideOf(cube1) != Cube.Side.BOTTOM && cube1.Neighbors.SideOf(cube2) != Cube.Side.TOP) { Cube.Side sidePlasmid = cube2.Neighbors.SideOf(cube1); //defines side neighboring cube is on Cube.Side sideColor = cube1.Neighbors.SideOf(cube2); //defines side of neighbor original cube is adjacent to #region reorients plasmid cube if (sideColor == Cube.Side.BOTTOM) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.TOP; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.BOTTOM; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.LEFT; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.RIGHT; } } if (sideColor == Cube.Side.RIGHT) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.LEFT; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.RIGHT; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.BOTTOM; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.TOP; } } if (sideColor == Cube.Side.LEFT) { if (cube1.Orientation == Cube.Side.BOTTOM) { cube1.Orientation = Cube.Side.RIGHT; } else if (cube1.Orientation == Cube.Side.TOP) { cube1.Orientation = Cube.Side.LEFT; } else if (cube1.Orientation == Cube.Side.RIGHT) { cube1.Orientation = Cube.Side.TOP; } else if (cube1.Orientation == Cube.Side.LEFT) { cube1.Orientation = Cube.Side.BOTTOM; } } #endregion #region reorients color cube if (sidePlasmid == Cube.Side.LEFT) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.LEFT; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.RIGHT; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.BOTTOM; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.TOP; } } if (sidePlasmid == Cube.Side.RIGHT) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.RIGHT; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.LEFT; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.BOTTOM; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.TOP; } } if (sidePlasmid == Cube.Side.TOP) { if (cube2.Orientation == Cube.Side.BOTTOM) { cube2.Orientation = Cube.Side.TOP; } else if (cube2.Orientation == Cube.Side.TOP) { cube2.Orientation = Cube.Side.BOTTOM; } else if (cube2.Orientation == Cube.Side.LEFT) { cube2.Orientation = Cube.Side.RIGHT; } else if (cube2.Orientation == Cube.Side.RIGHT) { cube2.Orientation = Cube.Side.LEFT; } } #endregion //redraws both cubes wrapper2.DrawColoredCube(); wrapper.DrawPlasmidCube(); } //Log.Debug("2 Neighbors: Colored and Plasmid"); if (wrapper2.mCube.Neighbors.Bottom == cube1) { Log.Debug("2 Neighbors: Colored and Plasmid"); //wrapper.pCubeStringId = wId; wrapper2.pCubeStringId = wId; wrapper.cCubeStringId = w2Id; //wrapper2.cCubeStringId = w2Id; } }//end if wrapper has plasmid cube and wrapper2 has colored cube #endregion #region If plasmid and E. Coli cubes become neighbors if (wrapper.mCubeType == 1 && wrapper2.mCubeType == 2) { cube1.Orientation = Cube.Side.TOP; wrapper.DrawPlasmidCube(); Log.Debug("1 Neighbors: Plasmid and E. Coli"); //if (wrapper.mCube.Neighbors.Right == cube2 || // wrapper.mCube.Neighbors.Left == cube2) //{ wrapper2.pCubeStringId = wId; wrapper.eCubeStringId = w2Id; wrapper.mNeedFlip = true; //} } if (wrapper.mCubeType == 2 && wrapper2.mCubeType == 1) { cube2.Orientation = Cube.Side.TOP; wrapper2.DrawPlasmidCube(); Log.Debug("2 Neighbors: Plasmid and E. Coli"); //if (wrapper2.mCube.Neighbors.Right == cube1 || // wrapper2.mCube.Neighbors.Left == cube1) //{ wrapper2.eCubeStringId = wId; wrapper.pCubeStringId = w2Id; wrapper2.mNeedFlip = true; //} } #endregion #region Tilting animation //Each if statement does the same thing just from a different cube's perspective-- //If the bottom neighbor of the cube is cube2 and if cube is a colored cube and //the neighboring cube is a bottom cube if (cube1.Neighbors.Bottom == cube2 && (wrapper.mCubeType == 0 && wrapper2.mCubeType == 1)) { Log.Debug("mNeedTilt is true"); wrapper.mNeedTilt = true; } if (cube2.Neighbors.Bottom == cube1 && (wrapper.mCubeType == 1 && wrapper2.mCubeType == 0)) { Log.Debug("mNeedTilt is true"); wrapper2.mNeedTilt = true; } #endregion #region Left-Right Plasmid/Ecoli Interaction //Each if statement checks for whether the neighboring cubes are Plasmid and E. Coli cubes //and they are to the left or right of each other //if ((cube1.Neighbors.Left == cube2 // && (wrapper.mCubeType == 1 && wrapper2.mCubeType == 2)) || // ((cube1.Neighbors.Right == cube2) // && (wrapper.mCubeType == 1 && wrapper2.mCubeType == 2))) //{ // Log.Debug("mNeedFlip is true"); // wrapper.mNeedFlip = true; //} //if ((cube2.Neighbors.Left == cube1 && // (wrapper.mCubeType == 2 && wrapper2.mCubeType == 1)) || // (cube2.Neighbors.Right == cube1 && // (wrapper.mCubeType == 2 && wrapper2.mCubeType == 1))) //{ // Log.Debug("mNeedFlip is true"); // wrapper2.mNeedFlip = true; //} #endregion #region If two E. Coli cubes become top-bottom neighbors if (wrapper.mCubeType == 2 && wrapper2.mCubeType == 2) { resetCubeWrappers(cube1, cube2); Log.Debug("two white Ecoli!"); if (wrapper.mCube.Neighbors.Bottom == cube2) //If cube1 is on top { Log.Debug("white top, white bottom"); wrapper.bCubeWrapper = wrapper2; wrapper.bCube = cube2; //wrapper.mCube.Orientation = Cube.Side.BOTTOM; wrapper.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 2); wrapper.mEcoliTravel = true; } if (wrapper2.mCube.Neighbors.Bottom == cube1) //If cube2 is on top { Log.Debug("white bottom, white top"); wrapper2.bCubeWrapper = wrapper; wrapper2.bCube = cube1; //wrapper2.mCube.Orientation = Cube.Side.BOTTOM; wrapper2.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 2); wrapper2.mEcoliTravel = true; } } #endregion #region If two Ecoli cubes Left-Right Neighbors if (wrapper.mCubeType == 2 && wrapper2.mCubeType == 2) { resetCubeWrappers(cube1, cube2); //Log.Debug("two white Ecoli!"); if (wrapper.mCube.Neighbors.Right == cube2 || wrapper2.mCube.Neighbors.Left == cube1) { //Log.Debug("white left, white right"); wrapper.rCubeWrapper = wrapper2; wrapper.rCube = cube2; //wrapper2.lCubeWrapper = wrapper; //wrapper2.lCube = cube1; //wrapper.mCube.Orientation = Cube.Side.BOTTOM; wrapper.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 1); wrapper2.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 3); wrapper.mEcoliTravel = true; return; } if (wrapper2.mCube.Neighbors.Right == cube1 || wrapper.mCube.Neighbors.Left == cube2) { //Log.Debug("white right, white left"); wrapper2.rCubeWrapper = wrapper; wrapper2.rCube = cube1; //wrapper.lCubeWrapper = wrapper2; //wrapper.lCube = cube2; //wrapper.mCube.Orientation = Cube.Side.BOTTOM; wrapper2.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 1); wrapper.mCube.Image(mEcoliTravelNames[0], 0, 0, 0, 0, 128, 128, 1, 3); wrapper2.mEcoliTravel = true; return; } } #endregion } }
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; }