static Vector3 GetCombinedFilterResults(
            NoiseSettings.TransformNoiseParams[] noiseParams, float time, Vector3 noiseOffsets)
        {
            float xPos = 0f;
            float yPos = 0f;
            float zPos = 0f;

            if (noiseParams != null)
            {
                for (int i = 0; i < noiseParams.Length; ++i)
                {
                    NoiseSettings.TransformNoiseParams param = noiseParams[i];
                    Vector3 timeVal = new Vector3(param.X.Frequency, param.Y.Frequency, param.Z.Frequency) * time;
                    timeVal += noiseOffsets;

                    Vector3 noise = new Vector3(
                        Mathf.PerlinNoise(timeVal.x, 0f) - 0.5f,
                        Mathf.PerlinNoise(timeVal.y, 0f) - 0.5f,
                        Mathf.PerlinNoise(timeVal.z, 0f) - 0.5f);

                    xPos += noise.x * param.X.Amplitude;
                    yPos += noise.y * param.Y.Amplitude;
                    zPos += noise.z * param.Z.Amplitude;
                }
            }
            return(new Vector3(xPos, yPos, zPos));
        }
Example #2
0
    /// <summary>
    /// Shakes the camera until the duration time has passed
    /// </summary>
    private void Shake()
    {
        if (this.shakeTimer > 0)
        {
            this.shakeTimer -= Time.deltaTime;

            if (this.shakeTimer <= 0)
            {
                this.shakeTimer = 0f;
                this.ResetShake();
            }
            else
            {
                this.virtualCameraNoise.m_AmplitudeGain = 1f;
                this.virtualCameraNoise.m_FrequencyGain = 1f;

                Cinemachine.NoiseSettings.TransformNoiseParams transformNoiseParams = new NoiseSettings.TransformNoiseParams();
                transformNoiseParams.X           = new NoiseSettings.NoiseParams();
                transformNoiseParams.X.Frequency = Mathf.Lerp(0f, this.Model.frequency, this.shakeTimer / this.Model.duration);
                transformNoiseParams.X.Amplitude = Mathf.Lerp(0f, this.Model.amplitude, this.shakeTimer / this.Model.duration);

                transformNoiseParams.Y           = new NoiseSettings.NoiseParams();
                transformNoiseParams.Y.Frequency = Mathf.Lerp(0f, this.Model.frequency, this.shakeTimer / this.Model.duration);
                transformNoiseParams.Y.Amplitude = Mathf.Lerp(0f, this.Model.amplitude, this.shakeTimer / this.Model.duration);

                this.Model.NoiseSettings.OrientationNoise = new Cinemachine.NoiseSettings.TransformNoiseParams[] { transformNoiseParams };
                this.virtualCameraNoise.m_NoiseProfile    = this.Model.NoiseSettings;
            }
        }
    }