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); }
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(); } } } }
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]; }
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(); } }