UniVRM/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs
ousttrue 3f09717236
Feature10/spring bone editor (#994)
* SceneView switch

* VRM10ControllerEditor を分割

* VRM10/Editor/Components/VRM10ControllerSceneView.cs

* LookAtEditor, SpringBoneEditor

* VRM10SpringBoneColliderGroup and VRM10SpringBone to VRM10ControllerSpringBone. not MonoBehaviour

* ReorderableList

* VRM10Window.cs

* SpringBoneTreeView

* ScrollView

* rename

* VRM10SpringBoneColliderEditor

* SelectedGUIBase

* spring name

* VRM10SpringBoneCollider gizmo to handle

* SelectedGUI

* 再度、VRM10SpringBoneColliderGroup を MonoBehaviour へ。SerializedObject の参照の都合
2021-06-01 16:00:49 +09:00

55 lines
1.5 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(VRM10Controller 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;
}
/// <summary>
/// 2D の GUI 描画
/// </summary>
public static void Draw2D(VRM10Controller target, SerializedObject so)
{
var tree = GetTree(target, so);
if (GUILayout.Button("Reload"))
{
Disable();
return;
}
tree.Draw2D();
}
/// <summary>
/// 3D の Handle 描画
/// </summary>
public static void Draw3D(VRM10Controller target, SerializedObject so)
{
var tree = GetTree(target, so);
tree.Draw3D();
}
}
}