mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-05 11:29:23 +00:00
109 lines
3.8 KiB
C#
109 lines
3.8 KiB
C#
using ABI_RC.Core.Util.AnimatorManager;
|
|
using System.Text.RegularExpressions;
|
|
using UnityEngine;
|
|
|
|
namespace ml_prm
|
|
{
|
|
class AvatarParameter
|
|
{
|
|
public readonly string m_name;
|
|
public readonly int m_hash = 0;
|
|
public readonly bool m_sync;
|
|
public readonly AnimatorControllerParameterType m_type;
|
|
readonly AvatarAnimatorManager m_manager = null;
|
|
|
|
public AvatarParameter(string p_name, AvatarAnimatorManager p_manager)
|
|
{
|
|
m_name = p_name;
|
|
m_manager = p_manager;
|
|
|
|
Regex l_regex = new Regex("^#?" + p_name + '$');
|
|
foreach(var l_param in m_manager.Animator.parameters)
|
|
{
|
|
if(l_regex.IsMatch(l_param.name))
|
|
{
|
|
m_name = l_param.name;
|
|
m_sync = !l_param.name.StartsWith('#');
|
|
m_hash = l_param.nameHash;
|
|
m_type = l_param.type;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetValue(bool p_value)
|
|
{
|
|
if(m_hash != 0)
|
|
{
|
|
if(m_sync)
|
|
m_manager.SetParameter(m_name, p_value);
|
|
else
|
|
{
|
|
switch(m_type)
|
|
{
|
|
case AnimatorControllerParameterType.Bool:
|
|
case AnimatorControllerParameterType.Trigger:
|
|
m_manager.Animator.SetBool(m_hash, p_value);
|
|
break;
|
|
case AnimatorControllerParameterType.Int:
|
|
m_manager.Animator.SetInteger(m_hash, p_value ? 1 : 0);
|
|
break;
|
|
case AnimatorControllerParameterType.Float:
|
|
m_manager.Animator.SetFloat(m_hash, p_value ? 1f : 0f);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetValue(int p_value)
|
|
{
|
|
if(m_hash != 0)
|
|
{
|
|
if(m_sync)
|
|
m_manager.SetParameter(m_name, p_value);
|
|
else
|
|
{
|
|
switch(m_type)
|
|
{
|
|
case AnimatorControllerParameterType.Bool:
|
|
case AnimatorControllerParameterType.Trigger:
|
|
m_manager.Animator.SetBool(m_hash, p_value > 0);
|
|
break;
|
|
case AnimatorControllerParameterType.Int:
|
|
m_manager.Animator.SetInteger(m_hash, p_value);
|
|
break;
|
|
case AnimatorControllerParameterType.Float:
|
|
m_manager.Animator.SetFloat(m_hash, p_value);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetValue(float p_value)
|
|
{
|
|
if(m_hash != 0)
|
|
{
|
|
if(m_sync)
|
|
m_manager.SetParameter(m_name, p_value);
|
|
else
|
|
{
|
|
switch(m_type)
|
|
{
|
|
case AnimatorControllerParameterType.Bool:
|
|
case AnimatorControllerParameterType.Trigger:
|
|
m_manager.Animator.SetBool(m_hash, p_value > 0f);
|
|
break;
|
|
case AnimatorControllerParameterType.Int:
|
|
m_manager.Animator.SetInteger(m_hash, (int)p_value);
|
|
break;
|
|
case AnimatorControllerParameterType.Float:
|
|
m_manager.Animator.SetFloat(m_hash, p_value);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|