using UnityEngine.Playables; namespace UnityEngine.Timeline { static class WeightUtility { // Given a mixer, normalizes the mixer if required // returns the output weight that should be applied to the mixer as input public static float NormalizeMixer(Playable mixer) { if (!mixer.IsValid()) return 0; int count = mixer.GetInputCount(); float weight = 0.0f; for (int c = 0; c < count; c++) { weight += mixer.GetInputWeight(c); } if (weight > Mathf.Epsilon && weight < 1) { for (int c = 0; c < count; c++) { mixer.SetInputWeight(c, mixer.GetInputWeight(c) / weight); } } return Mathf.Clamp01(weight); } } }