// Update is called once per frame void Update() { for (int i = 0; i < statusList.Count; ++i) { CubeStatus status = statusList[i]; status.boidObject.transform.forward = Vector3.Normalize(goalMarker.transform.position - status.boidObject.transform.position); statusList[i] = status; } }
public static void BuildFilesForRotation(RubikFileWriter p_firstFloorFile, RubikFileWriter p_secondFloorFile, RubikFileWriter p_thirdFloorFile , Cube p_rubik , Cube p_initialPermutation, RotationSequence p_rotationLinkedList, int p_level, String p_progressString) { if (p_level == 0) { return; } if (p_level > 5) { Console.WriteLine(p_progressString); } int i = 0; foreach (Face face in Enum.GetValues(typeof(Face))) { foreach (Direction direction in Enum.GetValues(typeof(Direction))) { i++; String myProgressString = p_progressString + String.Format(".%d", i); Rotation newRotation = new Rotation(face, direction); if (p_rotationLinkedList.isRedundant(newRotation)) { continue; } p_rotationLinkedList.addRotation(newRotation); p_rubik.rotateFace(newRotation.getFace(), newRotation.getDirection()); if (CubeStatus.isDifferentItemsInFirstFloorLessThanThree(p_rubik, p_initialPermutation)) { p_rotationLinkedList.writeToFile(p_firstFloorFile); } if (CubeStatus.isDifferentItemsOnlyInSecondFloorLessThanThree(p_rubik, p_initialPermutation)) { p_rotationLinkedList.writeToFile((p_secondFloorFile)); } if (CubeStatus.changesOnlyInThirdFloor(p_rubik, p_initialPermutation)) { p_rotationLinkedList.writeToFile(p_thirdFloorFile); } BuildFilesForRotation(p_firstFloorFile, p_secondFloorFile, p_thirdFloorFile, p_rubik, p_initialPermutation, p_rotationLinkedList, p_level - 1, myProgressString); p_rotationLinkedList.removeRotation(); p_rubik.rotateFace(newRotation.getReverse().getFace(), newRotation.getReverse().getDirection()); } } }
void Start() { statusList = new List <CubeStatus>(); for (int i = 0; i < boidCount; ++i) { for (int j = 0; j < boidCount; ++j) { GameObject newCube = new GameObject(); newCube.transform.parent = gameObject.transform; newCube.name = "Cube No." + (i * boidCount + j).ToString(); GameObject instPrefab = Instantiate(cubePrefab); instPrefab.transform.parent = newCube.transform; Vector3 startingPos = new Vector3((float)j - 4, (float)-3, (float)i - 4); CubeStatus status = new CubeStatus(); status.position = startingPos + goalMarker.transform.position; newCube.transform.position = status.position; status.boidObject = newCube; statusList.Add(status); } } cubePrefab.SetActive(false); }