45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
|
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<Transform>
|
||
|
{
|
||
|
|
||
|
[BlackboardOnly]
|
||
|
public BBParameter<List<GameObject>> 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<Transform>();
|
||
|
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<Transform> Get(Transform parent) {
|
||
|
var found = new List<Transform>();
|
||
|
foreach ( Transform t in parent ) {
|
||
|
found.Add(t);
|
||
|
found.AddRange(Get(t));
|
||
|
}
|
||
|
return found;
|
||
|
}
|
||
|
}
|
||
|
}
|