41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace Unity.PlasticSCM.Editor.UI.Progress | ||
|  | { | ||
|  |     internal static class LoadingSpinner | ||
|  |     { | ||
|  |         internal static void OnGUI( | ||
|  |             float progressPercent, | ||
|  |             string progressTooltip = null) | ||
|  |         { | ||
|  |             Matrix4x4 oldMatrix = GUI.matrix; | ||
|  | 
 | ||
|  |             Rect layoutRect = GUILayoutUtility.GetRect( | ||
|  |                 SPINNER_SIZE, SPINNER_SIZE); | ||
|  | 
 | ||
|  |             Rect position = new Rect( | ||
|  |                 layoutRect.x + (layoutRect.width - SPINNER_SIZE) / 2, | ||
|  |                 layoutRect.y + (layoutRect.height - SPINNER_SIZE) / 2, | ||
|  |                 SPINNER_SIZE, SPINNER_SIZE); | ||
|  | 
 | ||
|  |             Vector2 pivot = new Vector2( | ||
|  |                 position.x + SPINNER_SIZE / 2f, | ||
|  |                 position.y + SPINNER_SIZE / 2f); | ||
|  | 
 | ||
|  |             int rotation = (int)(360 * progressPercent); | ||
|  |             GUIUtility.RotateAroundPivot(rotation, pivot); | ||
|  | 
 | ||
|  |             GUI.Label( | ||
|  |                 position, | ||
|  |                 new GUIContent( | ||
|  |                     Images.GetImage(Images.Name.Loading), | ||
|  |                     progressTooltip), | ||
|  |                 UnityStyles.StatusBar.Icon); | ||
|  | 
 | ||
|  |             GUI.matrix = oldMatrix; | ||
|  |         } | ||
|  | 
 | ||
|  |         const int SPINNER_SIZE = 16; | ||
|  |     } | ||
|  | } |