IndieGame/client/Assets/ParadoxNotion/NodeCanvas/Tasks/Actions/GameObject/GetAllChildGameObjects.cs

45 lines
1.2 KiB
C#
Raw Normal View History

2024-10-11 10:12:15 +08:00
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;
}
}
}