forked from zxl/LaboratoryProtection
57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
using PMaker.Extension;
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
using UnityEngine;
|
|
|
|
public class ObjectItemColliderSetter : BaseBehaviour
|
|
{
|
|
#if UNITY_EDITOR
|
|
|
|
public ObjectItem[] objectItems;
|
|
|
|
public MeshRenderer[] meshRenderers;
|
|
public SkinnedMeshRenderer[] skinnedMeshRenderers;
|
|
|
|
public Collider[] colliders;
|
|
[Button]
|
|
public void Init()
|
|
{
|
|
objectItems = this.transform.GetComponentsInChildren<ObjectItem>(true);
|
|
meshRenderers = objectItems.SelectMany(_ => _.objects).SelectMany(_ => _.GetComponentsInChildren<MeshRenderer>(true)).ToArray();
|
|
skinnedMeshRenderers = objectItems.SelectMany(_ => _.objects).SelectMany(_ => _.GetComponentsInChildren<SkinnedMeshRenderer>(true)).ToArray();
|
|
this.SetDirty();
|
|
}
|
|
|
|
|
|
[Button]
|
|
public void CreateCollider()
|
|
{
|
|
var list = new List<Collider>();
|
|
foreach (var item in meshRenderers)
|
|
{
|
|
if (item.TryGetComponent<Collider>(out var collider) != true)
|
|
{
|
|
collider = item.gameObject.AddComponent<MeshCollider>();
|
|
list.Add(collider);
|
|
}
|
|
}
|
|
|
|
foreach (var item in skinnedMeshRenderers)
|
|
{
|
|
if (item.TryGetComponent<Collider>(out var collider) != true)
|
|
{
|
|
collider = item.gameObject.AddComponent<BoxCollider>();
|
|
list.Add(collider);
|
|
}
|
|
}
|
|
colliders = list.ToArray();
|
|
this.SetDirty();
|
|
}
|
|
#endif
|
|
}
|
|
|