void ApplyConstraints(EditorCurveBinding binding, AnimationCurve curve) { if (curve.length == 0) { return; } var curveUpdated = false; var property = m_PropertiesMap[binding]; if (property.propertyType == SerializedPropertyType.Boolean) { TimelineAnimationUtilities.ConstrainCurveToBooleanValues(curve); curveUpdated = true; } else { var range = AnimatedParameterUtility.GetAttributeForProperty <RangeAttribute>(property); if (range != null) { TimelineAnimationUtilities.ConstrainCurveToRange(curve, range.min, range.max); curveUpdated = true; } } if (!curveUpdated) { return; } using (new RebuildGuard(this)) { AnimationUtility.SetEditorCurve(m_ProxyCurves, binding, curve); } }