StartGpuEcsAnimatorScript.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using GPUECSAnimationBaker.Engine.AnimatorSystem;
  2. using Unity.Collections;
  3. using Unity.Entities;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. namespace GPUECSAnimationBaker.Samples.SampleScenes._6_Events
  7. {
  8. public class StartGpuEcsAnimatorScript : MonoBehaviour
  9. {
  10. public AnimationIdsMaria animationID;
  11. public void StartAnimation()
  12. {
  13. StartStopScriptSystem startStopSystem =
  14. World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged<StartStopScriptSystem>();
  15. startStopSystem.animationIDToStart = animationID;
  16. }
  17. }
  18. public partial class StartStopScriptSystem : SystemBase
  19. {
  20. public AnimationIdsMaria? animationIDToStart;
  21. protected override void OnUpdate()
  22. {
  23. if (animationIDToStart.HasValue)
  24. {
  25. Entities.ForEach((GpuEcsAnimatorAspect gpuEcsAnimatorAspect, in GpuEcsAnimatorControlComponent gpuEcsAnimatorControl) =>
  26. {
  27. if(gpuEcsAnimatorControl.animatorInfo.animationID == (int) animationIDToStart.Value)
  28. gpuEcsAnimatorAspect.StartAnimation();
  29. }).WithoutBurst().Run();
  30. animationIDToStart = null;
  31. }
  32. }
  33. }
  34. }