mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-08 11:59:26 -05:00
Merge pull request #1136 from ousttrue/fix1/fix_firstperson_editor
Fix1/fix firstperson editor
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using UniGLTF;
|
||||
using System.Linq;
|
||||
using UniGLTF;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UniVRM10
|
||||
{
|
||||
@@ -22,7 +24,7 @@ namespace UniVRM10
|
||||
SerializedPropertyEditor m_meta;
|
||||
SerializedPropertyEditor m_lookAt;
|
||||
SerializedPropertyEditor m_firstPerson;
|
||||
SerializedPropertyEditor m_asset;
|
||||
SerializedProperty m_prefab;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
@@ -36,10 +38,22 @@ namespace UniVRM10
|
||||
m_meta = VRM10MetaEditor.Create(serializedObject);
|
||||
m_lookAt = SerializedPropertyEditor.Create(serializedObject, nameof(m_target.LookAt));
|
||||
m_firstPerson = SerializedPropertyEditor.Create(serializedObject, nameof(m_target.FirstPerson));
|
||||
|
||||
m_prefab = serializedObject.FindProperty("m_prefab");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
// prefab
|
||||
if (_tab == Tabs.FirstPerson && m_prefab.objectReferenceValue == null)
|
||||
{
|
||||
EditorGUILayout.HelpBox("required !", MessageType.Error);
|
||||
}
|
||||
serializedObject.Update();
|
||||
EditorGUILayout.ObjectField(m_prefab);
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
EditorGUILayout.Separator();
|
||||
|
||||
// select sub editor
|
||||
using (new EnabledScope())
|
||||
{
|
||||
@@ -62,6 +76,14 @@ namespace UniVRM10
|
||||
break;
|
||||
|
||||
case Tabs.FirstPerson:
|
||||
using (new EditorGUI.DisabledScope(m_target.Prefab == null))
|
||||
{
|
||||
if (GUILayout.Button("set default"))
|
||||
{
|
||||
m_target.FirstPerson.SetDefault(m_target.Prefab.transform);
|
||||
}
|
||||
EditorGUILayout.HelpBox("Clear Renderers and add all renderers (Auto)", MessageType.Info);
|
||||
}
|
||||
m_firstPerson.OnInspectorGUI();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -78,6 +78,8 @@ namespace UniVRM10
|
||||
// vrmObject の expression を置き換える
|
||||
var vrmObject = AssetDatabase.LoadAllAssetsAtPath(importer.assetPath).First(x => x is VRM10Object) as VRM10Object;
|
||||
vrmObject.Expression.Replace(map);
|
||||
vrmObject.Prefab = prefab; // for FirstPerson Editor
|
||||
|
||||
// extract
|
||||
ExtractSubAsset(vrmObject, $"{path}/{vrmObject.name}.asset", false);
|
||||
|
||||
|
||||
@@ -11,20 +11,21 @@ namespace UniVRM10
|
||||
{
|
||||
[SerializeField]
|
||||
public List<RendererFirstPersonFlags> Renderers = new List<RendererFirstPersonFlags>();
|
||||
public void SetDefault(Transform root)
|
||||
{
|
||||
Renderers.Clear();
|
||||
|
||||
// public void CopyTo(GameObject _dst, Dictionary<Transform, Transform> map)
|
||||
// {
|
||||
// var dst = _dst.GetOrAddComponent<VRM10Controller>();
|
||||
// dst.Vrm.FirstPerson.Renderers = Renderers.Select(x =>
|
||||
// {
|
||||
// var renderer = map[x.Renderer.transform].GetComponent<Renderer>();
|
||||
// return new RendererFirstPersonFlags
|
||||
// {
|
||||
// Renderer = renderer,
|
||||
// FirstPersonFlag = x.FirstPersonFlag,
|
||||
// };
|
||||
// }).ToList();
|
||||
// }
|
||||
var renderers = root.GetComponentsInChildren<Renderer>();
|
||||
var paths = renderers.Select(x => x.transform.RelativePathFrom(root)).ToArray();
|
||||
foreach (var path in paths)
|
||||
{
|
||||
Renderers.Add(new RendererFirstPersonFlags
|
||||
{
|
||||
FirstPersonFlag = UniGLTF.Extensions.VRMC_vrm.FirstPersonType.auto,
|
||||
Renderer = path,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// If no layer names are set, use the default layer IDs.
|
||||
// Otherwise use the two Unity layers called "VRMFirstPersonOnly" and "VRMThirdPersonOnly".
|
||||
|
||||
Reference in New Issue
Block a user