private void GetUnflattenedHandleMatrixes(
            BoundingBoxManipulate.OperationEnum permittedOperations,
            Vector3[] positions,
            Quaternion rotation,
            Vector3 scale,
            List <Matrix4x4> cubeMatrixes,
            List <Matrix4x4> sphereMatrixes,
            int targetIndex)
        {
            // Get all our handle positions for cubes
            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.ScaleUniform) == BoundingBoxManipulate.OperationEnum.ScaleUniform)
            {
                for (int i = BoundsExtentions.LBF; i <= BoundsExtentions.RTB; i++)
                {
                    if (i == targetIndex)
                    {
                        continue;
                    }

                    cubeMatrixes.Add(Matrix4x4.TRS(handlePositions[i], rotation, scale));
                }
            }
            // Get all our handle positions for rotation
            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateX) == BoundingBoxManipulate.OperationEnum.RotateX)
            {
                for (int i = BoundsExtentions.LTF_RTF; i <= BoundsExtentions.RBB_LBB; i++)
                {
                    if (i == targetIndex)
                    {
                        continue;
                    }

                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[i], rotation, scale));
                }
            }

            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateY) == BoundingBoxManipulate.OperationEnum.RotateY)
            {
                for (int i = BoundsExtentions.LTF_LBF; i <= BoundsExtentions.RTF_RBF; i++)
                {
                    if (i == targetIndex)
                    {
                        continue;
                    }

                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[i], rotation, scale));
                }
            }

            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateZ) == BoundingBoxManipulate.OperationEnum.RotateZ)
            {
                for (int i = BoundsExtentions.RBF_RBB; i <= BoundsExtentions.LTF_LTB; i++)
                {
                    if (i == targetIndex)
                    {
                        continue;
                    }

                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[i], rotation, scale));
                }
            }
        }
        private void GetFlattenedHandleMatrixes(
            BoundingBoxManipulate.OperationEnum permittedOperations,
            BoundingBoxManipulate.FlattenModeEnum flattenAxis,
            Vector3[] positions,
            Quaternion rotation,
            Vector3 scale,
            List <Matrix4x4> cubeMatrixes,
            List <Matrix4x4> sphereMatrixes,
            int targetIndex)
        {
            // Get all our handle positions for cubes
            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.ScaleUniform) == BoundingBoxManipulate.OperationEnum.ScaleUniform)
            {
                for (int i = BoundsExtentions.LT; i <= BoundsExtentions.RB; i++)
                {
                    if (i == targetIndex)
                    {
                        continue;
                    }

                    cubeMatrixes.Add(Matrix4x4.TRS(handlePositions[i], rotation, scale));
                }
            }

            switch (flattenAxis)
            {
            case BoundingBox.FlattenModeEnum.FlattenX:
            default:
                break;

            case BoundingBox.FlattenModeEnum.FlattenY:
                break;

            case BoundingBox.FlattenModeEnum.FlattenZ:
                break;
            }
            // Get all our handle positions for rotation
            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateX) == BoundingBoxManipulate.OperationEnum.RotateX)
            {
                if (BoundsExtentions.LT_RT != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.LT_RT], rotation, scale));
                }

                if (BoundsExtentions.RB_LB != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.RB_LB], rotation, scale));
                }
            }

            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateY) == BoundingBoxManipulate.OperationEnum.RotateY)
            {
                if (BoundsExtentions.LB_LT != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.LB_LT], rotation, scale));
                }

                if (BoundsExtentions.RT_RB != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.RT_RB], rotation, scale));
                }
            }

            if ((permittedOperations & BoundingBoxManipulate.OperationEnum.RotateZ) == BoundingBoxManipulate.OperationEnum.RotateZ)
            {
                if (BoundsExtentions.LT_RT != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.LT_RT], rotation, scale));
                }

                if (BoundsExtentions.RB_LB != targetIndex)
                {
                    sphereMatrixes.Add(Matrix4x4.TRS(handlePositions[BoundsExtentions.RB_LB], rotation, scale));
                }
            }
        }