/// <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); }
/// <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); }