CombatHeroGPUAnimtion.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using GPUECSAnimationBaker.Engine.AnimatorSystem;
  2. namespace GameLogic.Combat.Hero
  3. {
  4. public class CombatHeroGPUAnimtion : HeroAnimtionBasic
  5. {
  6. public GpuEcsAnimatorBehaviour GpuEcsAnimatorBehaviour;
  7. public GPUAnimtion GPUAnimtion;
  8. private GpuEcsAnimationData[] animations;
  9. private HeroGPUAnimtionStateInfo _heroPlayStateInfoBasic;
  10. protected override void ProInit()
  11. {
  12. GpuEcsAnimatorBehaviour = combatHeroEntity.GameObject.transform.GetComponentInChildren<GpuEcsAnimatorBehaviour>();
  13. animations = GpuEcsAnimatorBehaviour.animations;
  14. GPUAnimtion = new GPUAnimtion();
  15. GPUAnimtion.Init(GpuEcsAnimatorBehaviour);
  16. _heroPlayStateInfoBasic = new HeroGPUAnimtionStateInfo();
  17. }
  18. protected override void ProUpdate(float t)
  19. {
  20. GPUAnimtion.Update();
  21. }
  22. private int GetAnimtionIndex(string name)
  23. {
  24. for (int i = 0; i < animations.Length; i++)
  25. {
  26. if (animations[i].stateName.Equals(name))
  27. {
  28. return i;
  29. }
  30. }
  31. return -1;
  32. }
  33. private void SetSpeed(float speed)
  34. {
  35. GPUAnimtion.SetSpeed(speed);
  36. }
  37. public override HeroPlayStateInfoBasic Play(string name, float speed = 1)
  38. {
  39. int index = GetAnimtionIndex(name);
  40. if (index < 0)
  41. {
  42. return null;
  43. }
  44. _heroPlayStateInfoBasic.OnSetSpeed = SetSpeed;
  45. AnimatorInfo animatorInfo = new AnimatorInfo()
  46. {
  47. animationID = index,
  48. blendFactor = 0,
  49. speedFactor = speed
  50. };
  51. GPUAnimtion.SetAnimtionIndex(animatorInfo);
  52. return _heroPlayStateInfoBasic;
  53. }
  54. }
  55. }