UniVRM/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs
2022-10-20 19:25:34 +09:00

60 lines
1.6 KiB
C#

using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;
namespace UniVRM10
{
/// <summary>
/// TreeView でアクティブな SpringBone, ColliderGroup を管理して、
/// アクティブな SpringBone と ColliderGroup を SceneHandle で Edit する。
/// </summary>
public static class SpringBoneEditor
{
static SpringBoneTreeView s_treeView;
static SpringBoneTreeView GetTree(Vrm10Instance target, SerializedObject so)
{
if (s_treeView == null || s_treeView.Target != target)
{
var state = new TreeViewState();
s_treeView = new SpringBoneTreeView(state, target, so);
s_treeView.Reload();
}
return s_treeView;
}
public static void Disable()
{
s_treeView = null;
}
public static MonoBehaviour Active;
/// <summary>
/// 2D の GUI 描画
/// </summary>
public static void Draw2D(Vrm10Instance target, SerializedObject so)
{
var tree = GetTree(target, so);
if (GUILayout.Button("Reload"))
{
Disable();
return;
}
tree.Draw2D();
}
/// <summary>
/// 3D の Handle 描画
/// </summary>
public static void Draw3D(Vrm10Instance target, SerializedObject so)
{
var tree = GetTree(target, so);
if (tree != null && target != null)
{
Active = tree.Draw3D(target.SpringBone);
}
}
}
}