first person set default button

This commit is contained in:
ousttrue 2021-08-06 17:42:20 +09:00
parent f28b5f93df
commit 081dbae6ff
2 changed files with 25 additions and 14 deletions

View File

@ -1,5 +1,7 @@
using UniGLTF;
using System.Linq;
using UniGLTF;
using UnityEditor;
using UnityEngine;
namespace UniVRM10
{
@ -74,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;
}

View File

@ -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".