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); | ||
|  |         } | ||
|  |     } | ||
|  | } |