44 lines
1.5 KiB
C#
44 lines
1.5 KiB
C#
using UniGLTF.M17N;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace UniGLTF.MeshUtility
|
|
{
|
|
/// <summary>
|
|
/// BoneMeshRemover 向けのエディタ。
|
|
///
|
|
/// SerializedProperty 経由で ユーザー定義 struct のフィールド
|
|
/// public List<BoneMeshEraser.EraseBone> _eraseBones;
|
|
/// を EditorGUILayout.PropertyField するための細工である。
|
|
///
|
|
/// SerializedObject は UnityEngine.Object から作成するので、
|
|
/// UnityEngine.Object を継承したクラスのフィールドに ユーザー定義 struct を配置する。
|
|
/// 持ち主の SerializedObject を経由して EditorGUILayout.PropertyField してる。
|
|
/// </summary>
|
|
[CustomEditor(typeof(MeshProcessDialog), true)]
|
|
class MeshProcessDialogEditor : Editor
|
|
{
|
|
MeshProcessDialog _targetDialog;
|
|
SerializedProperty _skinnedMesh;
|
|
SerializedProperty _eraseBones;
|
|
|
|
void OnEnable()
|
|
{
|
|
_targetDialog = target as MeshProcessDialog;
|
|
if (_targetDialog)
|
|
{
|
|
_skinnedMesh = serializedObject.FindProperty(nameof(MeshProcessDialog._skinnedMeshRenderer));
|
|
_eraseBones = serializedObject.FindProperty(nameof(MeshProcessDialog._eraseBones));
|
|
}
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
serializedObject.Update();
|
|
EditorGUILayout.PropertyField(_skinnedMesh);
|
|
EditorGUILayout.PropertyField(_eraseBones);
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
}
|
|
}
|