public static CSGBrush CreateBrushFromPlanes(UnityEngine.GameObject gameObject,
                                                     UnityEngine.Plane[]                planes,
                                                     UnityEngine.Vector3[]              tangents  = null,
                                                     UnityEngine.Vector3[]              binormals = null,
                                                     UnityEngine.Material[]             materials = null,
                                                     UnityEngine.Matrix4x4[]    textureMatrices   = null,
                                                     TextureMatrixSpace textureMatrixSpace        = TextureMatrixSpace.WorldSpace,
                                                     uint[]                                             smoothingGroups = null,
                                                     TexGenFlags[]                              texGenFlags             = null)
        {
            ControlMesh controlMesh;
            Shape       shape;

            if (!BrushFactory.CreateControlMeshFromPlanes(out controlMesh,
                                                          out shape,
                                                          planes,
                                                          tangents,
                                                          binormals,
                                                          materials,
                                                          textureMatrices,
                                                          textureMatrixSpace,
                                                          smoothingGroups,
                                                          texGenFlags))
            {
                return(null);
            }

            return(BrushFactory.CreateBrushComponent(gameObject, controlMesh, shape));
        }