Exemplo n.º 1
0
    public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
    {
        CharacterAnimationComponent sampleAnimationComponent = new CharacterAnimationComponent
        {
            curAnimation = idle.GetName(),
            idle         = idle.GetName(),
            run          = run.GetName()
        };

        dstManager.AddComponentData(entity, sampleAnimationComponent);
    }
    protected static void UpdateAnimation(float deltaTime, BaseGameplayRule gameplayRule, CharacterAnimationComponent animationData, BaseCharacterEntity characterEntity, Transform transform)
    {
        if (characterEntity.isRecaching)
        {
            return;
        }

        // Update current velocity
        animationData.velocityCalculationDeltaTime += deltaTime;
        if (animationData.velocityCalculationDeltaTime >= UPDATE_VELOCITY_DURATION)
        {
            if (!animationData.previousPosition.HasValue)
            {
                animationData.previousPosition = transform.position;
            }
            var currentMoveDistance = transform.position - animationData.previousPosition.Value;
            animationData.currentVelocity              = currentMoveDistance / animationData.velocityCalculationDeltaTime;
            animationData.previousPosition             = transform.position;
            animationData.velocityCalculationDeltaTime = 0f;
        }

        var model = characterEntity.Model;

        if (model != null)
        {
            model.UpdateAnimation(characterEntity.CurrentHp <= 0, animationData.currentVelocity, gameplayRule.GetMoveSpeed(characterEntity) / characterEntity.CacheBaseMoveSpeed);
        }
    }