mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-20 17:45:22 -05:00
VRM10SpringBoneColliderGroupEditor
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
|
||||
namespace UniVRM10
|
||||
{
|
||||
[CustomEditor(typeof(VRM10SpringBoneColliderGroup))]
|
||||
class VRM10SpringBoneColliderGroupEditor : Editor
|
||||
{
|
||||
ListView m_colliders;
|
||||
|
||||
static VRM10SpringBoneCollider s_collider;
|
||||
|
||||
public override VisualElement CreateInspectorGUI()
|
||||
{
|
||||
var root = new VisualElement();
|
||||
|
||||
// root.TrackSerializedObjectValue(serializedObject, OnValueChanged);
|
||||
|
||||
root.Bind(serializedObject);
|
||||
|
||||
{
|
||||
var s = new PropertyField { bindingPath = "m_Script" };
|
||||
s.SetEnabled(false);
|
||||
root.Add(s);
|
||||
}
|
||||
|
||||
|
||||
root.Add(new PropertyField { bindingPath = nameof(VRM10SpringBoneColliderGroup.Name) });
|
||||
|
||||
{
|
||||
m_colliders = new ListView
|
||||
{
|
||||
bindingPath = nameof(VRM10SpringBoneColliderGroup.Colliders)
|
||||
};
|
||||
m_colliders.selectionChanged += (e) =>
|
||||
{
|
||||
var item = (SerializedProperty)e.FirstOrDefault();
|
||||
if (item == null)
|
||||
{
|
||||
s_collider = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_collider = (VRM10SpringBoneCollider)item.objectReferenceValue;
|
||||
}
|
||||
};
|
||||
m_colliders.showAddRemoveFooter = true;
|
||||
m_colliders.showFoldoutHeader = true;
|
||||
m_colliders.headerTitle = "Colliders";
|
||||
root.Add(m_colliders);
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
public void OnSceneGUI()
|
||||
{
|
||||
HandleUtility.Repaint();
|
||||
if (m_colliders == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (s_collider is VRM10SpringBoneCollider c)
|
||||
{
|
||||
// var t = p.transform;
|
||||
// Handles.color = Color.green;
|
||||
// Handles.SphereHandleCap(t.GetInstanceID(), t.position, t.rotation, p.Radius * 2, EventType.Repaint);
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
Handles.matrix = c.transform.localToWorldMatrix;
|
||||
var newTargetPosition = Handles.PositionHandle(c.Offset, Quaternion.identity);
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
Undo.RecordObject(c, "collider");
|
||||
c.Offset = newTargetPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ccae4c83e5d3a6438402cdd307f4ad2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user