Esempio n. 1
0
    private void Update()
    {
        var pos = transform.position;

        var right   = transform.TransformVector(Vector3.right);
        var down    = transform.TransformVector(Vector3.down);
        var forward = transform.TransformVector(Vector3.forward);

        for (int i = 0; i < count; i++)
        {
            float t    = i / (count - 1f);
            var   pos2 = pos + right * (t - 0.5f) * width;

            SurfaceOutputs outputs = surfaceData.GetRaycastSurfaceTypes(pos2, down, shareList: true); //maxOutputCount: maxOutputCount,
            outputs.Downshift(maxOutputCount, minWeight);                                             //, mult);

            for (int ii = 0; ii < outputs.Count; ii++)
            {
                var output = outputs[ii];

                var pos3 = pos2 - down * yStep * (yOffset + output.surfaceTypeID);
                Debug.DrawLine(pos3, pos3 + forward * output.weight * depth, Color.yellow);
            }
        }
    }
Esempio n. 2
0
    private void Update()
    {
        var pos     = transform.position;
        var downDir = -transform.up;

        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        sw.Start();

        if (reuseRaycastHit)
        {
            if (!Physics.Raycast(pos, downDir, out RaycastHit rh, Mathf.Infinity))
            {
                return;
            }

            for (int i = 0; i < times; i++)
            {
                SurfaceOutputs outputs = soundSet.data.GetRHSurfaceTypes(rh, shareList: true);
                outputs.Downshift(maxOutputCount, minWeight);

                for (int ii = 0; ii < outputs.Count; ii++)
                {
                    clip = soundSet.surfaceTypeSounds[outputs[ii].surfaceTypeID].GetRandomClip(out volume, out pitch);
                }
            }
        }
        else
        {
            for (int i = 0; i < times; i++)
            {
                SurfaceOutputs outputs = soundSet.data.GetRaycastSurfaceTypes(pos, downDir, shareList: true);
                outputs.Downshift(maxOutputCount, minWeight);

                for (int ii = 0; ii < outputs.Count; ii++)
                {
                    clip = soundSet.surfaceTypeSounds[outputs[ii].surfaceTypeID].GetRandomClip(out volume, out pitch);
                }
            }
        }

        sw.Stop();
        float time = (float)sw.Elapsed.TotalMilliseconds;

        elapses.Insert(0, time);
        while (elapses.Count > smoothFrames)
        {
            elapses.RemoveAt(elapses.Count - 1);
        }

        float sum = 0;

        for (int i = 0; i < elapses.Count; i++)
        {
            sum += elapses[i];
        }
        sum /= smoothFrames;

        this.text.text = times + (reuseRaycastHit ? " Reused RH " : "") + " Iterations: \n\n" + time.ToString("00.00") + " MS\n\n" + sum.ToString("00.00") + " MS";
    }