Exemple #1
0
        public void StartRotate(CubeFaceDirection direction, int index)
        {
            switch (direction)
            {
            case CubeFaceDirection.Forward:
                RotateAxis = Vector3.forward;
                break;

            case CubeFaceDirection.Back:
                RotateAxis = Vector3.forward;
                Clockwise *= -1.0f;
                break;

            case CubeFaceDirection.Right:
                RotateAxis = Vector3.left;
                Clockwise *= 1.0f;
                break;

            case CubeFaceDirection.Left:
                RotateAxis = Vector3.left;
                Clockwise *= -1.0f;
                break;

            case CubeFaceDirection.Up:
                RotateAxis = Vector3.up;
                break;

            case CubeFaceDirection.Down:
                RotateAxis = Vector3.up;
                Clockwise *= -1.0f;
                break;
            }
            Combine(direction, index);
            Rotating = true;
        }
Exemple #2
0
        protected void Combine(CubeFaceDirection direction, int index)
        {
            RotateComponents.Clear();

            foreach (var cube in Cubes)
            {
                float i = 0;
                switch (direction)
                {
                case CubeFaceDirection.Up:
                case CubeFaceDirection.Down:
                    i = cube.transform.position.y;
                    break;

                case CubeFaceDirection.Left:
                case CubeFaceDirection.Right:
                    i = cube.transform.position.x;
                    break;

                case CubeFaceDirection.Forward:
                case CubeFaceDirection.Back:
                    i = cube.transform.position.z;
                    break;
                }
                if (i < index + 0.01f && i > index - 0.01f)
                {
                    RotateComponents.Add(cube);
                }
            }
            foreach (var cube in RotateComponents)
            {
                cube.GetComponent <Transform>().SetParent(transform, true);
            }
        }
Exemple #3
0
        public void SetArrow(Face face, Vector3 target, CubeFaceDirection direction)
        {
            Transform t     = face.transform;
            Vector3   up    = new Vector3();
            Vector3   down  = new Vector3();
            Vector3   left  = new Vector3();
            Vector3   right = new Vector3();

            switch (direction)
            {
            case CubeFaceDirection.Forward:
                up    = t.up;
                down  = -up;
                left  = t.right;
                right = -left;
                break;

            case CubeFaceDirection.Back:
                up    = t.up;
                down  = -up;
                right = t.right;
                left  = -right;
                break;

            case CubeFaceDirection.Right:
                up    = t.up;
                down  = -up;
                left  = t.forward;
                right = -left;
                break;

            case CubeFaceDirection.Left:
                up    = t.up;
                down  = -up;
                left  = -t.forward;
                right = -left;
                break;

            case CubeFaceDirection.Up:
                up    = -t.forward;
                down  = -up;
                left  = t.right;
                right = -left;
                break;

            case CubeFaceDirection.Down:
                up    = -t.forward;
                down  = -up;
                left  = -t.right;
                right = -left;
                break;
            }
            if (Approximate(up, target))
            {
                face.GetComponent <MeshRenderer>().sharedMaterial = M00_Up;
            }
            else if (Approximate(down, target))
            {
                face.GetComponent <MeshRenderer>().sharedMaterial = M01_Down;
            }
            else if (Approximate(left, target))
            {
                face.GetComponent <MeshRenderer>().sharedMaterial = M10_Left;
            }
            else if (Approximate(right, target))
            {
                face.GetComponent <MeshRenderer>().sharedMaterial = M11_Right;
            }
            else
            {
                face.GetComponent <MeshRenderer>().sharedMaterial = Face_White;
            }
            face.Direction = target;
        }