TransitionScript.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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._2_Transitions
  7. {
  8. public class TransitionScript : MonoBehaviour
  9. {
  10. public Scrollbar transitionSpeedScrollbar;
  11. public AnimationIdsCh19 animationId;
  12. public void Transition()
  13. {
  14. TransitionScriptSystem blendScriptSystem =
  15. World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged<TransitionScriptSystem>();
  16. blendScriptSystem.doTransition = true;
  17. blendScriptSystem.animationId = (int)animationId;
  18. blendScriptSystem.transitionSpeed = transitionSpeedScrollbar.value;
  19. }
  20. }
  21. public partial class TransitionScriptSystem : SystemBase
  22. {
  23. public bool doTransition;
  24. public float transitionSpeed;
  25. public int animationId;
  26. protected override void OnUpdate()
  27. {
  28. if (doTransition)
  29. {
  30. doTransition = false;
  31. Entities.ForEach((GpuEcsAnimatorAspect gpuEcsAnimatorAspect) =>
  32. {
  33. gpuEcsAnimatorAspect.RunAnimation(animationId, transitionSpeed: transitionSpeed);
  34. }).WithoutBurst().Run();
  35. }
  36. }
  37. }
  38. }