Exemple #1
0
 // 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());
                }
            }
        }
Exemple #3
0
    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);
    }