GpuEcsAnimatorAspect.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Unity.Entities;
  2. namespace GPUECSAnimationBaker.Engine.AnimatorSystem
  3. {
  4. public readonly partial struct GpuEcsAnimatorAspect : IAspect
  5. {
  6. private readonly RefRW<GpuEcsAnimatorControlComponent> control;
  7. private readonly RefRW<GpuEcsAnimatorControlStateComponent> controlState;
  8. public void RunAnimation(int animationID,
  9. float blendFactor = 0f, float speedFactor = 1f, float startNormalizedTime = 0f, float transitionSpeed = 0f)
  10. {
  11. control.ValueRW = new GpuEcsAnimatorControlComponent()
  12. {
  13. animatorInfo = new AnimatorInfo()
  14. {
  15. animationID = animationID,
  16. blendFactor = blendFactor,
  17. speedFactor = speedFactor
  18. },
  19. startNormalizedTime = startNormalizedTime,
  20. transitionSpeed = transitionSpeed
  21. };
  22. StartAnimation();
  23. }
  24. public void StartAnimation()
  25. {
  26. controlState.ValueRW = new GpuEcsAnimatorControlStateComponent() {
  27. state = GpuEcsAnimatorControlStates.Start
  28. };
  29. }
  30. public void StopAnimation()
  31. {
  32. controlState.ValueRW = new GpuEcsAnimatorControlStateComponent() {
  33. state = GpuEcsAnimatorControlStates.Stop
  34. };
  35. }
  36. }
  37. }