ComponentFactory.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. namespace Model
  2. {
  3. public static class ComponentFactory
  4. {
  5. public static T CreateWithParent<T>(Component parent) where T : Component
  6. {
  7. T disposer = Game.ObjectPool.Fetch<T>();
  8. disposer.Parent = parent;
  9. Game.EventSystem.Awake(disposer);
  10. return disposer;
  11. }
  12. public static T CreateWithParent<T, A>(Component parent, A a) where T : Component
  13. {
  14. T disposer = Game.ObjectPool.Fetch<T>();
  15. disposer.Parent = parent;
  16. Game.EventSystem.Awake(disposer, a);
  17. return disposer;
  18. }
  19. public static T CreateWithParent<T, A, B>(Component parent, A a, B b) where T : Component
  20. {
  21. T disposer = Game.ObjectPool.Fetch<T>();
  22. disposer.Parent = parent;
  23. Game.EventSystem.Awake(disposer, a, b);
  24. return disposer;
  25. }
  26. public static T CreateWithParent<T, A, B, C>(Component parent, A a, B b, C c) where T : Component
  27. {
  28. T disposer = Game.ObjectPool.Fetch<T>();
  29. disposer.Parent = parent;
  30. Game.EventSystem.Awake(disposer, a, b, c);
  31. return disposer;
  32. }
  33. public static T Create<T>() where T : Component
  34. {
  35. T disposer = Game.ObjectPool.Fetch<T>();
  36. Game.EventSystem.Awake(disposer);
  37. return disposer;
  38. }
  39. public static T Create<T, A>(A a) where T : Component
  40. {
  41. T disposer = Game.ObjectPool.Fetch<T>();
  42. Game.EventSystem.Awake(disposer, a);
  43. return disposer;
  44. }
  45. public static T Create<T, A, B>(A a, B b) where T : Component
  46. {
  47. T disposer = Game.ObjectPool.Fetch<T>();
  48. Game.EventSystem.Awake(disposer, a, b);
  49. return disposer;
  50. }
  51. public static T Create<T, A, B, C>(A a, B b, C c) where T : Component
  52. {
  53. T disposer = Game.ObjectPool.Fetch<T>();
  54. Game.EventSystem.Awake(disposer, a, b, c);
  55. return disposer;
  56. }
  57. public static T CreateWithId<T>(long id) where T : Component
  58. {
  59. T disposer = Game.ObjectPool.Fetch<T>();
  60. disposer.Id = id;
  61. Game.EventSystem.Awake(disposer);
  62. return disposer;
  63. }
  64. public static T CreateWithId<T, A>(long id, A a) where T : Component
  65. {
  66. T disposer = Game.ObjectPool.Fetch<T>();
  67. disposer.Id = id;
  68. Game.EventSystem.Awake(disposer, a);
  69. return disposer;
  70. }
  71. public static T CreateWithId<T, A, B>(long id, A a, B b) where T : Component
  72. {
  73. T disposer = Game.ObjectPool.Fetch<T>();
  74. disposer.Id = id;
  75. Game.EventSystem.Awake(disposer, a, b);
  76. return disposer;
  77. }
  78. public static T CreateWithId<T, A, B, C>(long id, A a, B b, C c) where T : Component
  79. {
  80. T disposer = Game.ObjectPool.Fetch<T>();
  81. disposer.Id = id;
  82. Game.EventSystem.Awake(disposer, a, b, c);
  83. return disposer;
  84. }
  85. }
  86. }