Beispiel #1
0
    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();
    }
Beispiel #2
0
    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);
    }