EventHandlerScript.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using GPUECSAnimationBaker.Engine.AnimatorSystem;
  3. using Unity.Entities;
  4. using UnityEngine;
  5. namespace GPUECSAnimationBaker.Samples.SampleScenes._6_Events
  6. {
  7. public class EvenLoggerBehaviour : MonoBehaviour
  8. {
  9. private TMPro.TextMeshProUGUI text;
  10. public void Start()
  11. {
  12. text = GetComponent<TMPro.TextMeshProUGUI>();
  13. EventHandlerSystem eventHandler =
  14. World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged<EventHandlerSystem>();
  15. eventHandler.logger = this;
  16. }
  17. public void Log(string toLog)
  18. {
  19. text.text = text.text.Insert(0, toLog);
  20. }
  21. }
  22. public partial class EventHandlerSystem : SystemBase
  23. {
  24. public EvenLoggerBehaviour logger;
  25. protected override void OnUpdate()
  26. {
  27. if (logger != null)
  28. {
  29. EntityManager entityManager = World.EntityManager;
  30. Entities.ForEach((in DynamicBuffer<GpuEcsAnimatorEventBufferElement> gpuEcsAnimatorEventBuffer, in Entity eventEntity) =>
  31. {
  32. foreach (GpuEcsAnimatorEventBufferElement gpuEcsAnimatorEvent in gpuEcsAnimatorEventBuffer)
  33. {
  34. string entityName = eventEntity.ToString();
  35. string animationId = ((AnimationIdsMaria)gpuEcsAnimatorEvent.animationId).ToString();
  36. string eventId = ((AnimationEventIdsMaria)gpuEcsAnimatorEvent.eventId).ToString();
  37. string time = UnityEngine.Time.time.ToString();
  38. logger.Log($"Entity:{entityName}, Animation:{animationId}, Event: {eventId}, Time: {time}\n");
  39. }
  40. }).WithoutBurst().WithStructuralChanges().Run();
  41. }
  42. }
  43. }
  44. }