Mirror of Svelto.ECS because we're a fan of it
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

52 Zeilen
1.4KB

  1. #if UNITY_5 || UNITY_5_3_OR_NEWER
  2. using System;
  3. using Object = UnityEngine.Object;
  4. using UnityEngine;
  5. namespace Svelto.ECS.Schedulers.Unity
  6. {
  7. //The EntitySubmissionScheduler has been introduced to make the entity components submission logic platform independent
  8. //You can customize the scheduler if you wish
  9. public class UnityEntitiesSubmissionScheduler : EntitiesSubmissionScheduler
  10. {
  11. public UnityEntitiesSubmissionScheduler(string name)
  12. {
  13. _scheduler = new GameObject(name).AddComponent<MonoScheduler>();
  14. GameObject.DontDestroyOnLoad(_scheduler.gameObject);
  15. _scheduler.onTick = SubmitEntities;
  16. }
  17. public override void Dispose()
  18. {
  19. if (_scheduler != null && _scheduler.gameObject != null)
  20. {
  21. Object.Destroy(_scheduler.gameObject);
  22. }
  23. }
  24. void SubmitEntities()
  25. {
  26. try
  27. {
  28. _onTick.SubmitEntities();
  29. }
  30. catch (Exception e)
  31. {
  32. paused = true;
  33. Svelto.Console.LogException(e);
  34. throw;
  35. }
  36. }
  37. protected internal override EnginesRoot.EntitiesSubmitter onTick
  38. {
  39. set => _onTick = value;
  40. }
  41. readonly MonoScheduler _scheduler;
  42. EnginesRoot.EntitiesSubmitter _onTick;
  43. }
  44. }
  45. #endif