Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / common / NodeExtend.cs
  1. using System;
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 该类为 node 节点通用扩展函数类
  6. /// </summary>
  7. public static class NodeExtend
  8. {
  9. /// <summary>
  10. /// 尝试将一个 Node2d 节点转换成一个 ActivityObject 对象, 如果转换失败, 则返回 null
  11. /// </summary>
  12. public static ActivityObject AsActivityObject(this Node2D node2d)
  13. {
  14. if (node2d is ActivityObject p)
  15. {
  16. return p;
  17. }
  18. var parent = node2d.GetParent();
  19. if (parent != null && parent is ActivityObject p2)
  20. {
  21. return p2;
  22. }
  23. return null;
  24. }
  25. /// <summary>
  26. /// 尝试将一个 Node2d 节点转换成一个 ActivityObject 对象, 如果转换失败, 则返回 null
  27. /// </summary>
  28. public static T AsActivityObject<T>(this Node2D node2d) where T : ActivityObject
  29. {
  30. if (node2d is T p)
  31. {
  32. return p;
  33. }
  34. var parent = node2d.GetParent();
  35. if (parent != null && parent is T p2)
  36. {
  37. return p2;
  38. }
  39. return null;
  40. }
  41.  
  42. /// <summary>
  43. /// 将节点插入的房间物体根节点
  44. /// </summary>
  45. /// <param name="node">实例</param>
  46. /// <param name="layer">放入的层</param>
  47. public static void AddToActivityRoot(this Node2D node, RoomLayerEnum layer)
  48. {
  49. GameApplication.Instance.World.GetRoomLayer(layer).AddChild(node);
  50. }
  51. }