107 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			107 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | namespace SRDebugger.UI.Other | |||
|  | { | |||
|  |     using SRF; | |||
|  |     using UnityEngine; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// Handles enabling/disabling handle objects for different anchoring modes | |||
|  |     /// </summary> | |||
|  |     public class HandleManager : SRMonoBehaviour | |||
|  |     { | |||
|  |         private bool _hasSet; | |||
|  |         public GameObject BottomHandle; | |||
|  |         public GameObject BottomLeftHandle; | |||
|  |         public GameObject BottomRightHandle; | |||
|  |         public PinAlignment DefaultAlignment; | |||
|  |         public GameObject LeftHandle; | |||
|  |         public GameObject RightHandle; | |||
|  |         public GameObject TopHandle; | |||
|  |         public GameObject TopLeftHandle; | |||
|  |         public GameObject TopRightHandle; | |||
|  | 
 | |||
|  |         private void Start() | |||
|  |         { | |||
|  |             if (!_hasSet) | |||
|  |             { | |||
|  |                 SetAlignment(DefaultAlignment); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         public void SetAlignment(PinAlignment alignment) | |||
|  |         { | |||
|  |             _hasSet = true; | |||
|  | 
 | |||
|  |             switch (alignment) | |||
|  |             { | |||
|  |                 case PinAlignment.TopLeft: | |||
|  |                 case PinAlignment.TopRight: | |||
|  |                     SetActive(BottomHandle, true); | |||
|  |                     SetActive(TopHandle, false); | |||
|  |                     SetActive(TopLeftHandle, false); | |||
|  |                     SetActive(TopRightHandle, false); | |||
|  |                     break; | |||
|  | 
 | |||
|  |                 case PinAlignment.BottomLeft: | |||
|  |                 case PinAlignment.BottomRight: | |||
|  |                     SetActive(BottomHandle, false); | |||
|  |                     SetActive(TopHandle, true); | |||
|  |                     SetActive(BottomLeftHandle, false); | |||
|  |                     SetActive(BottomRightHandle, false); | |||
|  |                     break; | |||
|  |             } | |||
|  | 
 | |||
|  |             switch (alignment) | |||
|  |             { | |||
|  |                 case PinAlignment.TopLeft: | |||
|  |                 case PinAlignment.BottomLeft: | |||
|  |                     SetActive(LeftHandle, false); | |||
|  |                     SetActive(RightHandle, true); | |||
|  |                     SetActive(TopLeftHandle, false); | |||
|  |                     SetActive(BottomLeftHandle, false); | |||
|  |                     break; | |||
|  | 
 | |||
|  |                 case PinAlignment.TopRight: | |||
|  |                 case PinAlignment.BottomRight: | |||
|  |                     SetActive(LeftHandle, true); | |||
|  |                     SetActive(RightHandle, false); | |||
|  |                     SetActive(TopRightHandle, false); | |||
|  |                     SetActive(BottomRightHandle, false); | |||
|  |                     break; | |||
|  |             } | |||
|  | 
 | |||
|  |             switch (alignment) | |||
|  |             { | |||
|  |                 case PinAlignment.TopLeft: | |||
|  |                     SetActive(BottomLeftHandle, false); | |||
|  |                     SetActive(BottomRightHandle, true); | |||
|  |                     break; | |||
|  | 
 | |||
|  |                 case PinAlignment.TopRight: | |||
|  |                     SetActive(BottomLeftHandle, true); | |||
|  |                     SetActive(BottomRightHandle, false); | |||
|  |                     break; | |||
|  | 
 | |||
|  |                 case PinAlignment.BottomLeft: | |||
|  |                     SetActive(TopLeftHandle, false); | |||
|  |                     SetActive(TopRightHandle, true); | |||
|  |                     break; | |||
|  | 
 | |||
|  |                 case PinAlignment.BottomRight: | |||
|  |                     SetActive(TopLeftHandle, true); | |||
|  |                     SetActive(TopRightHandle, false); | |||
|  |                     break; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void SetActive(GameObject obj, bool active) | |||
|  |         { | |||
|  |             if (obj == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             obj.SetActive(active); | |||
|  |         } | |||
|  |     } | |||
|  | } |