generated from vrchat-common/template-avatar
49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
#if UNITY_EDITOR
|
|
using System.Linq;
|
|
using JetBrains.Annotations;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace RekornTools.Avatar
|
|
{
|
|
[ExecuteInEditMode]
|
|
public sealed class MeshBonePairs : MonoBehaviour
|
|
{
|
|
// ReSharper disable AutoPropertyCanBeMadeGetOnly.Local
|
|
[field: SerializeField] [NotNull] public SkinnedMeshRenderers Meshes { get; private set; } = new SkinnedMeshRenderers();
|
|
[field: SerializeField] [NotNull] public Transforms Bones { get; private set; } = new Transforms();
|
|
// ReSharper restore AutoPropertyCanBeMadeGetOnly.Local
|
|
|
|
public void SelectAll()
|
|
{
|
|
var selection = new Object[] { };
|
|
|
|
if (Meshes.TryGetSelections(out var meshSelections))
|
|
selection = selection.Concat(meshSelections).ToArray();
|
|
if (Bones.TryGetSelections(out var boneSelections))
|
|
selection = selection.Concat(boneSelections).ToArray();
|
|
|
|
if (selection.Length > 0) Selection.objects = selection;
|
|
}
|
|
|
|
public void ClearAll()
|
|
{
|
|
ClearMeshes();
|
|
ClearBones();
|
|
}
|
|
|
|
public void DestroyAll()
|
|
{
|
|
DestroyMeshes();
|
|
DestroyBones();
|
|
}
|
|
|
|
public void SelectMeshes() => Meshes.SelectComponents();
|
|
public void SelectBones() => Bones.SelectComponents();
|
|
public void ClearMeshes() => this.UndoableAction(() => Meshes.Clear());
|
|
public void ClearBones() => this.UndoableAction(() => Bones.Clear());
|
|
public void DestroyMeshes() => this.UndoableAction(() => Meshes.DestroyItems());
|
|
public void DestroyBones() => this.UndoableAction(() => Bones.DestroyItems());
|
|
}
|
|
}
|
|
#endif
|