CombatHeroGPUAnimtion.cs 2.1 KB

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