mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-16 00:14:37 +01:00
53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
using MoleMole.Config;
|
|
using UnityEngine;
|
|
|
|
namespace MoleMole
|
|
{
|
|
public class AbilityAvatarTiedMixin : BaseAbilityMixin
|
|
{
|
|
private AvatarTiedMixin config;
|
|
|
|
private BaseMonoAvatar _avatar;
|
|
|
|
private int _animatorMoveStackIx;
|
|
|
|
private Vector3 _lastSteer;
|
|
|
|
private float _accumulatedSteerAmount;
|
|
|
|
public AbilityAvatarTiedMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config)
|
|
: base(instancedAbility, instancedModifier, config)
|
|
{
|
|
this.config = (AvatarTiedMixin)config;
|
|
_avatar = (BaseMonoAvatar)actor.entity;
|
|
}
|
|
|
|
public override void OnAdded()
|
|
{
|
|
_animatorMoveStackIx = _avatar.PushProperty("Animator_RigidBodyVelocityRatio", -1000f);
|
|
_lastSteer = Vector3.zero;
|
|
_accumulatedSteerAmount = 0f;
|
|
}
|
|
|
|
public override void OnRemoved()
|
|
{
|
|
_avatar.PopProperty("Animator_RigidBodyVelocityRatio", _animatorMoveStackIx);
|
|
}
|
|
|
|
public override void Core()
|
|
{
|
|
AvatarControlData activeControlData = _avatar.GetActiveControlData();
|
|
if (activeControlData.hasAnyControl)
|
|
{
|
|
Vector3 steerDirection = activeControlData.steerDirection;
|
|
_accumulatedSteerAmount += (steerDirection - _lastSteer).sqrMagnitude;
|
|
_lastSteer = steerDirection;
|
|
if (_accumulatedSteerAmount > instancedAbility.Evaluate(config.UntieSteerAmount))
|
|
{
|
|
actor.abilityPlugin.TryRemoveModifier(instancedModifier);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|