1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using GameLogic.Combat.Hero.HeroGPU;
- using GPUECSAnimationBaker.Engine.AnimatorSystem;
- namespace GameLogic.Combat.Hero
- {
- public class CombatHeroGPUAnimtion : HeroAnimtionBasic
- {
- public GpuEcsAnimatorBehaviour GpuEcsAnimatorBehaviour;
- public GPUAnimtion GPUAnimtion;
- private GpuEcsAnimationData[] animations;
- private HeroGPUAnimtionStateInfo _heroPlayStateInfoBasic;
- protected HeroGPUMono _heroGPUMono;
- protected override void ProInit()
- {
- GpuEcsAnimatorBehaviour = combatHeroEntity.GameObject.transform.GetComponentInChildren<GpuEcsAnimatorBehaviour>();
- animations = GpuEcsAnimatorBehaviour.animations;
- GPUAnimtion = new GPUAnimtion();
- GPUAnimtion.Init(GpuEcsAnimatorBehaviour);
- _heroPlayStateInfoBasic = new HeroGPUAnimtionStateInfo();
- _heroGPUMono = combatHeroEntity.combatHeroGameObject.HeroGPUMono;
- }
- protected override void ProUpdate(float t)
- {
- GPUAnimtion.Update();
- _heroGPUMono.animtionState = GPUAnimtion.gpuEcsAnimatorShaderData.shaderData;
- }
- private int GetAnimtionIndex(string name)
- {
- for (int i = 0; i < animations.Length; i++)
- {
- if (animations[i].stateName.Equals(name))
- {
- return i;
- }
- }
- return -1;
- }
- private void SetSpeed(float speed)
- {
- GPUAnimtion.SetSpeed(speed);
- }
- public override HeroPlayStateInfoBasic Play(string name, float speed = 1)
- {
- int index = GetAnimtionIndex(name);
- if (index < 0)
- {
- return null;
- }
- _heroPlayStateInfoBasic.OnSetSpeed = SetSpeed;
- AnimatorInfo animatorInfo = new AnimatorInfo()
- {
- animationID = index,
- blendFactor = 0,
- speedFactor = speed
- };
- GPUAnimtion.SetAnimtionIndex(animatorInfo);
- return _heroPlayStateInfoBasic;
- }
- }
- }
|