Adjustments to BoneProxyEditor UI

This commit is contained in:
bd_ 2022-10-20 20:53:46 -07:00
parent 4e16ec35b0
commit 432968f0ab

View File

@ -11,7 +11,7 @@ namespace net.fushizen.modular_avatar.core.editor
[CustomEditor(typeof(ModularAvatarBoneProxy))] [CustomEditor(typeof(ModularAvatarBoneProxy))]
[CanEditMultipleObjects] [CanEditMultipleObjects]
public class BoneProxyEditor : Editor internal class BoneProxyEditor : Editor
{ {
private bool foldout = false; private bool foldout = false;
@ -22,7 +22,7 @@ namespace net.fushizen.modular_avatar.core.editor
objRefs = new Object[targets.Length]; objRefs = new Object[targets.Length];
for (int i = 0; i < targets.Length; i++) for (int i = 0; i < targets.Length; i++)
{ {
objRefs[i] = ScriptableObject.CreateInstance<TempObjRef>(); objRefs[i] = CreateInstance<TempObjRef>();
} }
} }
@ -30,6 +30,7 @@ namespace net.fushizen.modular_avatar.core.editor
{ {
GameObject parentAvatar = null; GameObject parentAvatar = null;
bool suppressTarget = false;
for (int i = 0; i < targets.Length; i++) for (int i = 0; i < targets.Length; i++)
{ {
var t = (ModularAvatarBoneProxy) targets[i]; var t = (ModularAvatarBoneProxy) targets[i];
@ -38,17 +39,23 @@ namespace net.fushizen.modular_avatar.core.editor
if (av != null && parentAvatar == null) parentAvatar = av.gameObject; if (av != null && parentAvatar == null) parentAvatar = av.gameObject;
if (av == null || parentAvatar != av.gameObject) if (av == null || parentAvatar != av.gameObject)
{ {
base.OnInspectorGUI(); suppressTarget = true;
return; break;
} }
((TempObjRef) objRefs[i]).target = t.target; ((TempObjRef) objRefs[i]).target = t.target;
} }
if (suppressTarget)
{
foldout = true;
}
else
{
var virtObj = new SerializedObject(objRefs); var virtObj = new SerializedObject(objRefs);
var virtProp = virtObj.FindProperty(nameof(TempObjRef.target)); var virtProp = virtObj.FindProperty(nameof(TempObjRef.target));
}
var currentTarget = targets.Length != 1 ? null : ((ModularAvatarBoneProxy) targets[0]).target;
EditorGUI.BeginChangeCheck(); EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(virtProp, G("boneproxy.target")); EditorGUILayout.PropertyField(virtProp, G("boneproxy.target"));