void Start() { Instance = this; Renderer = gameObject.GetComponent <Renderer>(); Light = GameObject.Find("SceneLight").GetComponent <Light>(); Prototyping = GameObject.Find("Prototyping").GetComponent <Prototyping>(); UserMeshVisualizer = GameObject.Find("UserMesh")?.GetComponent <UserMeshVisualizer>(); ApplySmoothing(); if (gameObject.GetComponent <LimitMesh>() != null) { LimitMesh = gameObject.GetComponent <LimitMesh>(); LimitingMesh = true; } //Desmond AirSticks.Right.NoteOn += ExplodeA; AirSticks.Left.NoteOn += ExplodeB; //Gran Related cuts AirSticks.Right.NoteOn += () => GranRelatedOn(AirSticks.Hand.Right); AirSticks.Left.NoteOn += () => GranRelatedOn(AirSticks.Hand.Left); AirSticks.Right.NoteOff += GranRelatedOff; AirSticks.Left.NoteOff += GranRelatedOff; Iridescence = gameObject.GetComponent <IridescenceController>(); MidiManager.OneFiveNine.Beep += BangOutline; gameObject.InstanceMaterial(); }
public static Mesh LaplacianFilter(Mesh mesh, LimitMesh limitMesh, int times, JobHandle jobHandlerDependency) { if (!limitMesh.Limiting) { return(LaplacianFilter(mesh, times, jobHandlerDependency)); } var limitedTriangles = limitMesh.LimitedTriangles.ToArray(); if (limitedTriangles.Length == 0) { limitedTriangles = mesh.triangles; } var limitedVertexCount = limitedTriangles.Max() + 1; var limitedVertices = new Vector3[limitedVertexCount]; Array.Copy(mesh.vertices, limitedVertices, limitedVertices.Length); mesh.vertices = LaplacianFilter(limitedVertices, limitedTriangles, times, jobHandlerDependency); if (!OffsetTriangles || LatestTriangles == null) { mesh.triangles = limitedTriangles; LatestTriangles = limitedTriangles; } else { // use the last triangles not the current ones to provide a noisy effect PreviousTriangles = LatestTriangles.ToList(); int lastVertex = mesh.vertices.Length; // remove any triangles that reference vertices that don't exist in this frame PreviousTriangles.RemoveAll(v => (v >= lastVertex)); // and make sure the count is divisable by three to make a full triangle while ((PreviousTriangles.Count % 3) != 0) { PreviousTriangles.Add(lastVertex); } mesh.triangles = PreviousTriangles.ToArray(); LatestTriangles = limitedTriangles; } mesh.RecalculateNormals(); mesh.RecalculateBounds(); return(mesh); }