using System; using Godot; /// <summary> /// 该类为 node 节点通用扩展函数类 /// </summary> public static class NodeExtend { /// <summary> /// 尝试将一个 Node2d 节点转换成一个 ActivityObject 对象, 如果转换失败, 则返回 null /// </summary> public static ActivityObject AsActivityObject(this Node2D node2d) { if (node2d is ActivityObject p) { return p; } var parent = node2d.GetParent(); if (parent != null && parent is ActivityObject p2) { return p2; } return null; } /// <summary> /// 尝试将一个 Node2d 节点转换成一个 ActivityObject 对象, 如果转换失败, 则返回 null /// </summary> public static T AsActivityObject<T>(this Node2D node2d) where T : ActivityObject { if (node2d is T p) { return p; } var parent = node2d.GetParent(); if (parent != null && parent is T p2) { return p2; } return null; } /// <summary> /// 将节点插入的房间物体根节点 /// </summary> /// <param name="node">实例</param> /// <param name="layer">放入的层</param> public static void AddToActivityRoot(this Node2D node, RoomLayerEnum layer) { GameApplication.Instance.World.GetRoomLayer(layer).AddChild(node); } }