31 lines
		
	
	
		
			880 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			880 B
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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);
 | |
|         }
 | |
|     }
 | |
| }
 |