using System.Collections.Generic; using System.Linq; using NodeCanvas.Framework; using ParadoxNotion.Design; using UnityEngine; namespace NodeCanvas.Tasks.Actions { [Category("GameObject")] public class GetAllChildGameObjects : ActionTask { [BlackboardOnly] public BBParameter> saveAs; public bool recursive = false; protected override string info { get { return string.Format("{0} = {1} Children Of {2}", saveAs, recursive ? "All" : "First", agentInfo); } } protected override void OnExecute() { var found = new List(); foreach ( Transform t in agent.transform ) { found.Add(t); if ( recursive ) { found.AddRange(Get(t)); } } saveAs.value = found.Select(t => t.gameObject).ToList(); EndAction(); } List Get(Transform parent) { var found = new List(); foreach ( Transform t in parent ) { found.Add(t); found.AddRange(Get(t)); } return found; } } }