private static Logarithmic ( float timeStart, float timeEnd, float logBase ) : |
||
timeStart | float | |
timeEnd | float | |
logBase | float | |
Résultat |
private static AnimationCurve Logarithmic(float timeStart, float timeEnd, float logBase)
{
float num;
float num2;
float num3;
List<Keyframe> list = new List<Keyframe>();
float num4 = 2f;
timeStart = Mathf.Max(timeStart, 0.0001f);
for (float i = timeStart; i < timeEnd; i *= num4)
{
num = LogarithmicValue(i, timeStart, logBase);
num3 = i / 50f;
num2 = (LogarithmicValue(i + num3, timeStart, logBase) - LogarithmicValue(i - num3, timeStart, logBase)) / (num3 * 2f);
list.Add(new Keyframe(i, num, num2, num2));
}
num = LogarithmicValue(timeEnd, timeStart, logBase);
num3 = timeEnd / 50f;
num2 = (LogarithmicValue(timeEnd + num3, timeStart, logBase) - LogarithmicValue(timeEnd - num3, timeStart, logBase)) / (num3 * 2f);
list.Add(new Keyframe(timeEnd, num, num2, num2));
return new AnimationCurve(list.ToArray());
}
private CurveWrapper[] GetCurveWrapperArray() { List <CurveWrapper> list = new List <CurveWrapper>(); AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves; for (int i = 0; i < audioCurves.Length; i++) { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i]; if (audioCurveWrapper.curveProp != null) { AnimationCurve animationCurve = audioCurveWrapper.curveProp.animationCurveValue; bool flag; if (audioCurveWrapper.type == AudioSourceInspector.AudioCurveType.Volume) { AudioRolloffMode enumValueIndex = (AudioRolloffMode)this.m_RolloffMode.enumValueIndex; if (this.m_RolloffMode.hasMultipleDifferentValues) { flag = false; } else if (enumValueIndex == AudioRolloffMode.Custom) { flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues; } else { flag = (!this.m_MinDistance.hasMultipleDifferentValues && !this.m_MaxDistance.hasMultipleDifferentValues); if (enumValueIndex == AudioRolloffMode.Linear) { animationCurve = AnimationCurve.Linear(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f, 0f); } else if (enumValueIndex == AudioRolloffMode.Logarithmic) { animationCurve = AudioSourceInspector.Logarithmic(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f); } } } else { flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues; } if (flag) { if (animationCurve.length == 0) { Debug.LogError(audioCurveWrapper.legend.text + " curve has no keys!"); } else { list.Add(this.GetCurveWrapper(animationCurve, audioCurveWrapper)); } } } } return(list.ToArray()); }