EntityFactory.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. namespace Hotfix
  3. {
  4. public static class EntityFactory
  5. {
  6. public static T Create<T>() where T : Disposer
  7. {
  8. T disposer = ObjectPool.Instance.Fetch<T>();
  9. ObjectEvents.Instance.Awake(disposer);
  10. return disposer;
  11. }
  12. public static T Create<T, A>(A a) where T : Disposer
  13. {
  14. T disposer = ObjectPool.Instance.Fetch<T>();
  15. ObjectEvents.Instance.Awake(disposer, a);
  16. return disposer;
  17. }
  18. public static T Create<T, A, B>(A a, B b) where T : Disposer
  19. {
  20. T disposer = ObjectPool.Instance.Fetch<T>();
  21. ObjectEvents.Instance.Awake(disposer, a, b);
  22. return disposer;
  23. }
  24. public static T Create<T, A, B, C>(A a, B b, C c) where T : Disposer
  25. {
  26. T disposer = ObjectPool.Instance.Fetch<T>();
  27. ObjectEvents.Instance.Awake(disposer, a, b, c);
  28. return disposer;
  29. }
  30. public static T CreateWithId<T>(long id) where T : Disposer
  31. {
  32. T disposer = ObjectPool.Instance.Fetch<T>();
  33. disposer.Id = id;
  34. ObjectEvents.Instance.Awake(disposer);
  35. return disposer;
  36. }
  37. public static T CreateWithId<T, A>(long id, A a) where T : Disposer
  38. {
  39. T disposer = ObjectPool.Instance.Fetch<T>();
  40. disposer.Id = id;
  41. ObjectEvents.Instance.Awake(disposer, a);
  42. return disposer;
  43. }
  44. public static T CreateWithId<T, A, B>(long id, A a, B b) where T : Disposer
  45. {
  46. T disposer = ObjectPool.Instance.Fetch<T>();
  47. disposer.Id = id;
  48. ObjectEvents.Instance.Awake(disposer, a, b);
  49. return disposer;
  50. }
  51. public static T CreateWithId<T, A, B, C>(long id, A a, B b, C c) where T : Disposer
  52. {
  53. T disposer = ObjectPool.Instance.Fetch<T>();
  54. disposer.Id = id;
  55. ObjectEvents.Instance.Awake(disposer, a, b, c);
  56. return disposer;
  57. }
  58. }
  59. }