2023-06-12 15:51:41 +08:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
namespace BITKit;
|
|
|
|
/// <summary>
|
|
|
|
/// 为Godot.Node提供数学工具
|
|
|
|
/// </summary>
|
|
|
|
public static partial class MathNode
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// 获取Node下所有的子Node节点
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="self">Root Node</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static IEnumerable<Node> GetAllNode(Node self)
|
|
|
|
{
|
|
|
|
List<Node> nodes = new() { self };
|
|
|
|
For(self);
|
|
|
|
void For(Node node)
|
|
|
|
{
|
|
|
|
foreach (var x in node.GetChildren())
|
|
|
|
{
|
|
|
|
For(x);
|
|
|
|
nodes.Add(x);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nodes.Distinct();
|
|
|
|
}
|
2023-07-08 00:02:32 +08:00
|
|
|
|
2023-07-11 00:14:36 +08:00
|
|
|
public static void ClearChild(Node self)
|
2023-07-08 00:02:32 +08:00
|
|
|
{
|
|
|
|
foreach (var x in self.GetChildren())
|
|
|
|
{
|
|
|
|
x.QueueFree();
|
|
|
|
}
|
|
|
|
}
|
2023-07-17 04:10:14 +08:00
|
|
|
|
|
|
|
public static T Create<T>(this Node self) where T : Node,new()
|
|
|
|
{
|
|
|
|
var t = new T();
|
|
|
|
self.AddChild(t);
|
|
|
|
return t;
|
|
|
|
}
|
2023-06-12 15:51:41 +08:00
|
|
|
}
|