Пример #1
0
    private SmallCube[,,] ResetPositionAfterRotation()
    {
        float multi = PlayerSettings.CubeSize / 2f - 0.5f;

        SmallCube[,,] newSmallCubes = new SmallCube[PlayerSettings.CubeSize, PlayerSettings.CubeSize, PlayerSettings.CubeSize];

        for (int x = 0; x < PlayerSettings.CubeSize; x++)
        {
            for (int y = 0; y < PlayerSettings.CubeSize; y++)
            {
                for (int z = 0; z < PlayerSettings.CubeSize; z++)
                {
                    for (int x2 = 0; x2 < PlayerSettings.CubeSize; x2++)
                    {
                        for (int y2 = 0; y2 < PlayerSettings.CubeSize; y2++)
                        {
                            for (int z2 = 0; z2 < PlayerSettings.CubeSize; z2++)
                            {
                                if (smallCubes[x2, y2, z2].transform.position == new Vector3(-multi + x, -multi + y, -multi + z))
                                {
                                    newSmallCubes[x, y, z] = smallCubes[x2, y2, z2];
                                }
                            }
                        }
                    }
                }
            }
        }

        return(newSmallCubes);
    }
Пример #2
0
 private void CreateCube()
 {
     for (int z = 0; z < PlayerSettings.CubeSize; z++)
     {
         for (int y = 0; y < PlayerSettings.CubeSize; y++)
         {
             for (int x = 0; x < PlayerSettings.CubeSize; x++)
             {
                 SmallCube newSmallCube = Instantiate(smallCubePrefab) as SmallCube;
                 smallCubes[x, y, z]                  = newSmallCube;
                 newSmallCube.transform.parent        = transform;
                 newSmallCube.transform.localPosition = new Vector3(x - PlayerSettings.CubeSize * 0.5f + 0.5f, y - PlayerSettings.CubeSize * 0.5f + 0.5f, z - PlayerSettings.CubeSize * 0.5f + 0.5f);
                 SetActiveCubelets(newSmallCube, x, y, z);
                 smallCubes[x, y, z].SetMaterials();
             }
         }
     }
 }
Пример #3
0
    private void PhysicalFaceRotation(Face face, bool prime)
    {
        SmallCube[] tempFaceCubes   = new SmallCube[9];
        var         faceCubeIndexes = GetPhysicalFaceCubeIndexes(face);

        for (int i = 0; i < 9; i++)
        {
            tempFaceCubes[i] = _physicalCube[faceCubeIndexes[i]];
        }

        _physicalCube[faceCubeIndexes[0]] = prime ? tempFaceCubes[2] : tempFaceCubes[6];
        _physicalCube[faceCubeIndexes[1]] = prime ? tempFaceCubes[5] : tempFaceCubes[3];

        _physicalCube[faceCubeIndexes[2]] = prime ? tempFaceCubes[8] : tempFaceCubes[0];
        _physicalCube[faceCubeIndexes[5]] = prime ? tempFaceCubes[7] : tempFaceCubes[1];

        _physicalCube[faceCubeIndexes[8]] = prime ? tempFaceCubes[6] : tempFaceCubes[2];
        _physicalCube[faceCubeIndexes[7]] = prime ? tempFaceCubes[3] : tempFaceCubes[5];

        _physicalCube[faceCubeIndexes[6]] = prime ? tempFaceCubes[0] : tempFaceCubes[8];
        _physicalCube[faceCubeIndexes[3]] = prime ? tempFaceCubes[1] : tempFaceCubes[7];
    }
Пример #4
0
    private void SetActiveCubelets(SmallCube cube, int x, int y, int z)
    {
        // Bottom Row
        if (x == 0 && y == 0 && z == 0)
        {
            cube.SetBottomWestSouthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == 0 && z == 0)
        {
            cube.SetSouthBottomSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == 0 && z == 0)
        {
            cube.SetBottomEastSouthCorner();
        }
        if (x == 0 && y == 0 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetWestBottomSide();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == 0 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetBottomMiddle();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == 0 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetEastBottomSide();
        }
        if (x == 0 && y == 0 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetBottomWestNorthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == 0 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetNorthBottomSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == 0 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetBottomEastNorthCorner();
        }

        // Middle Row
        if (x == 0 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetMiddleWestSouthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetSouthMiddleSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetMiddleEastSouthCorner();
        }
        if (x == 0 && y > 0 && y < PlayerSettings.CubeSize - 1 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetWestMiddleSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y > 0 && y < PlayerSettings.CubeSize - 1 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetEastMiddleSide();
        }
        if (x == 0 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetMiddleWestNorthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetNorthMiddleSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y > 0 && y < PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetMiddlemEastNorthCorner();
        }

        // Top Row
        if (x == 0 && y == PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetTopWestSouthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetTopBottomSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z == 0)
        {
            cube.SetTopEastSouthCorner();
        }
        if (x == 0 && y == PlayerSettings.CubeSize - 1 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetWestTopSide();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetTopMiddle();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z > 0 && z < PlayerSettings.CubeSize - 1)
        {
            cube.SetEastTopSide();
        }
        if (x == 0 && y == PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetTopWestNorthCorner();
        }
        if (x > 0 && x < PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetNorthTopSide();
        }
        if (x == PlayerSettings.CubeSize - 1 && y == PlayerSettings.CubeSize - 1 && z == PlayerSettings.CubeSize - 1)
        {
            cube.SetTopEastNorthCorner();
        }
    }