void SetNumberOnFace(int x, int y, int z, Cube.ESide side) { float validCount = 0; switch (side) { case Cube.ESide.Front: case Cube.ESide.Back: validCount = mFrontValidCube[new Vector2(x, y)]; break; case Cube.ESide.Left: case Cube.ESide.Right: validCount = mLefttValidCube[new Vector2(y, z)]; break; case Cube.ESide.Top: case Cube.ESide.Down: validCount = mTopValidCube[new Vector2(x, z)]; break; } var cube = mCubes[x, y, z]; cube.SetSideNumber(side, validCount); cube.EnableSide(side, true); }
void SelectCubeInLine(Vector2 position) { Ray ray = Camera.main.ScreenPointToRay(position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { var cube = hit.collider.GetComponent <Cube>(); if (cube) { Cube.ESide side = cube.GetHitFace(hit); Vector3 dir = Vector3.zero; switch (side) { case Cube.ESide.Front: dir = Vector3.forward; break; case Cube.ESide.Back: dir = Vector3.back; break; case Cube.ESide.Left: dir = Vector3.right; break; case Cube.ESide.Right: dir = Vector3.left; break; case Cube.ESide.Top: dir = Vector3.down; break; case Cube.ESide.Down: dir = Vector3.up; break; default: return; } var cubes = cube.Parent.SelectCubes(cube.Position, dir); foreach (var cubeInList in cubes) { SelectCube(cubeInList, cube.State); } } } }