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(true); meshRenderers = objectItems.SelectMany(_ => _.objects).SelectMany(_ => _.GetComponentsInChildren(true)).ToArray(); skinnedMeshRenderers = objectItems.SelectMany(_ => _.objects).SelectMany(_ => _.GetComponentsInChildren(true)).ToArray(); this.SetDirty(); } [Button] public void CreateCollider() { var list = new List(); foreach (var item in meshRenderers) { if (item.TryGetComponent(out var collider) != true) { collider = item.gameObject.AddComponent(); list.Add(collider); } } foreach (var item in skinnedMeshRenderers) { if (item.TryGetComponent(out var collider) != true) { collider = item.gameObject.AddComponent(); list.Add(collider); } } colliders = list.ToArray(); this.SetDirty(); } #endif }