UniVRM/Assets/VRM10_Samples/ClothSample/RotateParticle/Editor/RotateParticleRuntimeProviderEditor.cs
2024-11-20 15:24:54 +09:00

68 lines
2.2 KiB
C#

using System.Linq;
using UnityEditor;
using UnityEngine;
using UniVRM10;
namespace RotateParticle.Components
{
[CustomEditor(typeof(RotateParticleRuntimeProvider))]
public class RotateParticleRuntimeProviderEditor : Editor
{
const string FROM_VRM10_MENU = "Replace VRM10 Springs to RotateParticle Warps";
[MenuItem(FROM_VRM10_MENU, true)]
public static bool IsFromVrm10()
{
var go = Selection.activeGameObject;
if (go == null)
{
return false;
}
return go.GetComponent<Vrm10Instance>() != null;
}
public override void OnInspectorGUI()
{
var provider = target as RotateParticleRuntimeProvider;
if (provider == null)
{
return;
}
var instance = provider.GetComponent<Vrm10Instance>();
using (new EditorGUI.DisabledScope(instance == null))
{
if (GUILayout.Button("Replace VRM10 Springs to RotateParticle Warps"))
{
Undo.IncrementCurrentGroup();
Undo.SetCurrentGroupName(FROM_VRM10_MENU);
var undo = Undo.GetCurrentGroup();
Undo.RegisterCompleteObjectUndo(instance, "RegisterCompleteObjectUndo");
RotateParticleRuntimeProvider.FromVrm10(instance, Undo.AddComponent<Warp>, Undo.DestroyObjectImmediate);
Undo.RegisterFullObjectHierarchyUndo(instance.gameObject, "RegisterFullObjectHierarchyUndo");
Undo.RegisterCompleteObjectUndo(provider, "RegisterCompleteObjectUndo");
provider.Reset();
Undo.CollapseUndoOperations(undo);
}
}
using (new EditorGUI.DisabledScope(instance == null || !Application.isPlaying))
{
if (GUILayout.Button("RestoreInitialTransform"))
{
instance.Runtime.SpringBone.RestoreInitialTransform();
}
}
if (GUILayout.Button("Reset"))
{
provider.Reset();
}
base.OnInspectorGUI();
}
}
}