105 lines
2.5 KiB
C#
105 lines
2.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using static SerializableBone;
|
|
|
|
public class HandleManager : MonoBehaviour
|
|
{
|
|
public static HandleManager Instance;
|
|
public GameObject HandlesPanel;
|
|
public GameObject Pfb_HandleDisplay;
|
|
public UIPopupPanel Pfb_Popup;
|
|
public Button Pfb_PopupButton;
|
|
|
|
public Material LineRendererMaterial;
|
|
|
|
public List<BoneTags> EnabledHandles = new List<BoneTags>() { BoneTags.Humanoid };
|
|
public bool EnabledLines = true;
|
|
|
|
public static bool InteractionInProgress;
|
|
|
|
private List<UIHandle> AllHandles = new List<UIHandle>();
|
|
|
|
public static System.Action<HandleUndoData> RegisterRuntimeGizmoUndoAction;
|
|
public static System.Action<List<HandleUndoData>> RegisterRuntimeGizmoUndoActions;
|
|
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
var camera = Camera.main;
|
|
//var poseModeOn = UmaViewerUI.Instance.PoseManager.PoseModeOn;
|
|
|
|
foreach (var handle in AllHandles)
|
|
{
|
|
//handle.ForceDisplayOff(!poseModeOn);
|
|
handle.UpdateManual(camera, EnabledLines);
|
|
|
|
if (handle.Popup.gameObject.activeInHierarchy)
|
|
{
|
|
handle.Popup.UpdateManual(camera);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void RegisterHandle(UIHandle handle)
|
|
{
|
|
var hm = HandleManager.Instance;
|
|
|
|
if (hm.AllHandles.Contains(handle))
|
|
{
|
|
return;
|
|
}
|
|
|
|
hm.AllHandles.Add(handle);
|
|
}
|
|
|
|
public static void UnregisterHandle(UIHandle handle)
|
|
{
|
|
var hm = HandleManager.Instance;
|
|
|
|
if (!hm.AllHandles.Contains(handle))
|
|
{
|
|
return;
|
|
}
|
|
|
|
hm.AllHandles.Remove(handle);
|
|
}
|
|
|
|
public static void CloseAllPopups()
|
|
{
|
|
var hm = HandleManager.Instance;
|
|
|
|
foreach(var handle in hm.AllHandles)
|
|
{
|
|
if (handle.Popup.gameObject.activeInHierarchy)
|
|
{
|
|
handle.TogglePopup();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary> Used on UI buttons </summary>
|
|
public void ToggleBonesVisible(string tag)
|
|
{
|
|
var enumTag = (BoneTags)System.Enum.Parse(typeof(BoneTags), tag);
|
|
if (EnabledHandles.Contains(enumTag))
|
|
{
|
|
EnabledHandles.Remove(enumTag);
|
|
}
|
|
else
|
|
{
|
|
EnabledHandles.Add(enumTag);
|
|
}
|
|
}
|
|
|
|
/// <summary> Used on UI buttons </summary>
|
|
public void ToggleLinesVisible(bool value)
|
|
{
|
|
EnabledLines = value;
|
|
}
|
|
} |