public static IEnumerable <Type> GetUnityTypes(UnityObject target) { Ensure.That(nameof(target)).IsNotNull(target); if (target.IsComponentHolder()) { yield return(typeof(GameObject)); foreach (var componentType in target.GetComponents <Component>().NotNull().Select(c => c.GetType()).Distinct()) { yield return(componentType); } } else { yield return(target.GetType()); } }
private void BuildHierarchy(Object target) { if (target.IsComponentHolder()) { hierarchy = new List <Object>(target.GetComponents <Component>()); var owner = target.GameObject(); if (owner != null) { hierarchy.Insert(0, owner); } hierarchyIndex = hierarchy.IndexOf(target); } else { hierarchy.Clear(); hierarchyIndex = 0; } }