ComponentFactory.cs 2.5 KB

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