mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-03 10:29:22 +00:00
85 lines
2.5 KiB
C#
85 lines
2.5 KiB
C#
using ABI_RC.Core.Util.AnimatorManager;
|
|
using System.Text.RegularExpressions;
|
|
using UnityEngine;
|
|
|
|
namespace ml_amt
|
|
{
|
|
class AvatarParameter
|
|
{
|
|
public enum ParameterType
|
|
{
|
|
Moving,
|
|
MovementSpeed,
|
|
Velocity
|
|
}
|
|
|
|
readonly ParameterType m_type;
|
|
readonly string m_name;
|
|
readonly int m_hash = 0;
|
|
readonly bool m_sync;
|
|
readonly AnimatorControllerParameterType m_innerType;
|
|
readonly AvatarAnimatorManager m_manager = null;
|
|
|
|
public AvatarParameter(ParameterType p_type, AvatarAnimatorManager p_manager)
|
|
{
|
|
m_type = p_type;
|
|
m_name = p_type.ToString();
|
|
m_manager = p_manager;
|
|
|
|
Regex l_regex = new Regex("^#?" + m_name + '$');
|
|
foreach(var l_param in m_manager.Animator.parameters)
|
|
{
|
|
if(l_regex.IsMatch(l_param.name))
|
|
{
|
|
m_hash = l_param.nameHash;
|
|
m_sync = !l_param.name.StartsWith('#');
|
|
m_innerType = l_param.type;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Update(MotionTweaker p_tweaker)
|
|
{
|
|
switch(m_type)
|
|
{
|
|
case ParameterType.Moving:
|
|
SetBoolean(p_tweaker.IsMoving());
|
|
break;
|
|
|
|
case ParameterType.MovementSpeed:
|
|
SetFloat(p_tweaker.GetMovementSpeed());
|
|
break;
|
|
|
|
case ParameterType.Velocity:
|
|
SetFloat(p_tweaker.GetVelocity());
|
|
break;
|
|
}
|
|
}
|
|
|
|
public bool IsValid() => (m_hash != 0);
|
|
public ParameterType GetParameterType() => m_type;
|
|
|
|
void SetFloat(float p_value)
|
|
{
|
|
if(m_innerType == AnimatorControllerParameterType.Float)
|
|
{
|
|
if(m_sync)
|
|
m_manager.SetParameter(m_name, p_value);
|
|
else
|
|
m_manager.Animator.SetFloat(m_hash, p_value);
|
|
}
|
|
}
|
|
|
|
void SetBoolean(bool p_value)
|
|
{
|
|
if(m_innerType == AnimatorControllerParameterType.Bool)
|
|
{
|
|
if(m_sync)
|
|
m_manager.SetParameter(m_name, p_value);
|
|
else
|
|
m_manager.Animator.SetBool(m_hash, p_value);
|
|
}
|
|
}
|
|
}
|
|
}
|