Pose detection and animator transitions for regular avatars

This commit is contained in:
SDraw 2022-09-15 00:14:12 +03:00
parent 0cab0fb7db
commit 6b67471217
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
7 changed files with 152 additions and 38 deletions

View file

@ -10,17 +10,23 @@ namespace ml_amt
enum ModSetting
{
IKOverride = 0,
CrouchLimit
CrouchLimit,
DetectPose,
ProneLimit
};
static bool ms_ikOverride = true;
static float ms_crouchLimit = 0.65f;
static bool ms_detectPose = true;
static float ms_proneLimit = 0.3f;
static MelonLoader.MelonPreferences_Category ms_category = null;
static List<MelonLoader.MelonPreferences_Entry> ms_entries = null;
static public event Action<bool> IKOverrideChange;
static public event Action<float> CrouchLimitChange;
static public event Action<bool> DetectPoseChange;
static public event Action<float> ProneLimitChange;
public static void Init()
{
@ -29,6 +35,8 @@ namespace ml_amt
ms_entries = new List<MelonLoader.MelonPreferences_Entry>();
ms_entries.Add(ms_category.CreateEntry(ModSetting.IKOverride.ToString(), true));
ms_entries.Add(ms_category.CreateEntry(ModSetting.CrouchLimit.ToString(), 65));
ms_entries.Add(ms_category.CreateEntry(ModSetting.DetectPose.ToString(), true));
ms_entries.Add(ms_category.CreateEntry(ModSetting.ProneLimit.ToString(), 30));
Load();
@ -61,6 +69,8 @@ namespace ml_amt
{
ms_ikOverride = (bool)ms_entries[(int)ModSetting.IKOverride].BoxedValue;
ms_crouchLimit = ((int)ms_entries[(int)ModSetting.CrouchLimit].BoxedValue) * 0.01f;
ms_detectPose = (bool)ms_entries[(int)ModSetting.DetectPose].BoxedValue;
ms_proneLimit = ((int)ms_entries[(int)ModSetting.ProneLimit].BoxedValue) * 0.01f;
}
static void OnSliderUpdate(string p_name, string p_value)
@ -73,8 +83,13 @@ namespace ml_amt
{
ms_crouchLimit = int.Parse(p_value) * 0.01f;
CrouchLimitChange?.Invoke(ms_crouchLimit);
}
break;
} break;
case ModSetting.ProneLimit:
{
ms_proneLimit = int.Parse(p_value) * 0.01f;
ProneLimitChange?.Invoke(ms_proneLimit);
} break;
}
ms_entries[(int)l_setting].BoxedValue = int.Parse(p_value);
@ -91,8 +106,13 @@ namespace ml_amt
{
ms_ikOverride = bool.Parse(p_value);
IKOverrideChange?.Invoke(ms_ikOverride);
}
break;
} break;
case ModSetting.DetectPose:
{
ms_detectPose = bool.Parse(p_value);
DetectPoseChange?.Invoke(ms_detectPose);
} break;
}
ms_entries[(int)l_setting].BoxedValue = bool.Parse(p_value);
@ -108,5 +128,15 @@ namespace ml_amt
{
get => ms_ikOverride;
}
public static bool DetectPose
{
get => ms_detectPose;
}
public static float ProneLimit
{
get => ms_proneLimit;
}
}
}