Exemple #1
0
    /// <summary>
    /// Loads a serialized GarbageMatteData instance to be used/viewed/edited.
    /// </summary>
    /// <param name="garbageMatteData"></param>
    /// <returns>True if there was actual data to load (at least one plane).</returns>
    public bool LoadData(GarbageMatteData garbageMatteData)
    {
        int nbMesh = garbageMatteData.numberMeshes;

        if (nbMesh < 0)
        {
            return(false);
        }
        currentPlaneIndex = 0;
        ResetPoints(false);

        for (int i = 0; i < nbMesh; i++)
        {
            points.Clear();
            triangles.Clear();
            go.Add(CreateGameObject());
            go[currentPlaneIndex].GetComponent <MeshRenderer>().material.renderQueue = QUEUE_TRANSPARENT_VALUE + 5;
            meshFilters[currentPlaneIndex]            = go[currentPlaneIndex].GetComponent <MeshFilter>();
            meshFilters[currentPlaneIndex].sharedMesh = CreateMesh();
            meshFilters[currentPlaneIndex].sharedMesh.MarkDynamic();
            Plane p = garbageMatteData.planes[i];
            for (int j = 0; j < p.numberVertices; j++)
            {
                points.Add(p.vertices[j]);
                GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                sphere.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
                sphere.tag       = "HelpObject";
                sphere.hideFlags = HideFlags.HideInHierarchy;
                outlineMaterial.SetFloat("_Outline", 0.00f);
                sphere.GetComponent <MeshRenderer>().material = outlineMaterial;

                sphere.transform.position = points[points.Count - 1];
                sphere.layer = sphereLayer;
                borderspheres.Add(sphere);
            }
            if (go.Count == 0)
            {
                return(false);
            }

            CloseShape(triangles, points, currentPlaneIndex);
            EndPlane();
        }
        return(true);
    }
Exemple #2
0
    /// <summary>
    /// Packages the current garbage matte into GarbageMatteData, which can be serialized/saved by GreenScreenEditor.
    /// </summary>
    /// <returns>Data ready to be serialized. </returns>
    public GarbageMatteData RegisterData()
    {
        GarbageMatteData garbageMatteData = new GarbageMatteData();

        if (meshFilters == null)
        {
            return(garbageMatteData);
        }
        garbageMatteData.numberMeshes = meshFilters.Count;
        garbageMatteData.planes       = new List <Plane>();
        for (int i = 0; i < meshFilters.Count; i++)
        {
            Vector3[] vertices = meshFilters[i].mesh.vertices;
            Plane     p        = new Plane();
            p.numberVertices = vertices.Length;
            p.vertices       = new List <Vector3>(vertices);
            garbageMatteData.planes.Add(p);
            //garbageMatteData.plane.ad
        }
        return(garbageMatteData);
    }