namespace SRDebugger.UI.Other { using SRF; using UnityEngine; /// /// Handles enabling/disabling handle objects for different anchoring modes /// 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); } } }