public void RemoveScreenshakeParameters(ScreenshakeParameters parameters)
 {
     if (currentScreenshakeParameters.Contains(parameters))
     {
         currentScreenshakeParameters.Remove(parameters);
     }
 }
    public static ScreenshakeParameters Lerp(ScreenshakeParameters min, ScreenshakeParameters max, float coeff)
    {
        float force       = Mathf.Lerp(min.force, max.force, coeff);
        float duration    = Mathf.Lerp(min.duration, max.duration, coeff);
        float attenuation = Mathf.Lerp(min.attenuationCoeff, max.attenuationCoeff, coeff);

        return(new ScreenshakeParameters(force, duration, attenuation, max.type));
    }
    public ScreenshakeParameters GetExplosionScreenshakeParameters(float explosionSize)
    {
        float coeff = Mathf.Clamp((explosionSize - minExplosionRefValue) / (maxExplosionRefValue - minExplosionRefValue), 0, 1);

        return(ScreenshakeParameters.Lerp(minExplosionScreenshakeParameters, maxExplosionScreenshakeParameters, coeff));
    }
    /// <summary>
    /// Call this method to start a screenshake with the inputed parameters
    /// </summary>
    /// <param name="parameters">The parameters of the screenshake that is going to start</param>
    public void StartScreenshake(ScreenshakeParameters parameters)
    {
        ScreenshakeParameters newParam = new ScreenshakeParameters(parameters.Force, parameters.Duration, parameters.Attenuation, parameters.Type);

        AddScreenshakeParameters(newParam);
    }
 public void AddScreenshakeParameters(ScreenshakeParameters parameters)
 {
     currentScreenshakeParameters.Add(parameters);
 }