mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-04 02:49:23 +00:00
Ragdolled
avatar's animator boolean parameter
Simplified additional parameters parsing
This commit is contained in:
parent
912b37c87f
commit
2c7c90c792
7 changed files with 97 additions and 53 deletions
43
ml_prm/AvatarBoolParameter.cs
Normal file
43
ml_prm/AvatarBoolParameter.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using ABI_RC.Core;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ml_prm
|
||||
{
|
||||
class AvatarBoolParameter
|
||||
{
|
||||
public readonly string m_name;
|
||||
public readonly int m_hash = 0;
|
||||
public readonly bool m_sync;
|
||||
readonly CVRAnimatorManager m_manager = null;
|
||||
|
||||
public AvatarBoolParameter(string p_name, CVRAnimatorManager 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) && (l_param.type == AnimatorControllerParameterType.Bool))
|
||||
{
|
||||
m_name = l_param.name;
|
||||
m_hash = l_param.nameHash;
|
||||
m_sync = (l_param.name[0] != '#');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetValue(bool p_value)
|
||||
{
|
||||
if(m_hash != 0)
|
||||
{
|
||||
if(m_sync)
|
||||
m_manager.SetAnimatorParameterBool(m_name, p_value);
|
||||
else
|
||||
m_manager.animator.SetBool(m_hash, p_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -24,6 +24,10 @@ Optional mod's settings with [BTKUILib](https://github.com/BTK-Development/BTKUI
|
|||
* **Angular movement drag:** angular movement resistance; `2.0` by default.
|
||||
* **Reset settings:** resets mod settings to default.
|
||||
|
||||
Available additional parameters for AAS animator:
|
||||
* **`Ragdolled`:** defines current ragdoll state; boolean.
|
||||
* Note: Can be set as local-only (not synced) if starts with `#` character.
|
||||
|
||||
# Unity Editor Script
|
||||
You can also trigger the ragdoll via animations on your avatar. To do this you need:
|
||||
* Download and import the `ml_prm_editor_script.unitypackage` into your unity project
|
||||
|
|
|
@ -33,6 +33,7 @@ namespace ml_prm
|
|||
|
||||
RagdollToggle m_avatarRagdollToggle = null;
|
||||
RagdollTrigger m_customTrigger = null;
|
||||
AvatarBoolParameter m_ragdolledParameter = null;
|
||||
|
||||
bool m_reachedGround = true;
|
||||
|
||||
|
@ -129,6 +130,7 @@ namespace ml_prm
|
|||
m_enabled = false;
|
||||
m_avatarReady = false;
|
||||
m_avatarRagdollToggle = null;
|
||||
m_ragdolledParameter = null;
|
||||
m_rigidBodies.Clear();
|
||||
m_colliders.Clear();
|
||||
m_puppetReferences = new BipedRagdollReferences();
|
||||
|
@ -231,6 +233,7 @@ namespace ml_prm
|
|||
}
|
||||
|
||||
m_avatarRagdollToggle = PlayerSetup.Instance._avatar.GetComponentInChildren<RagdollToggle>(true);
|
||||
m_ragdolledParameter = new AvatarBoolParameter("Ragdolled", PlayerSetup.Instance.animatorManager);
|
||||
|
||||
m_avatarReady = true;
|
||||
}
|
||||
|
@ -336,6 +339,7 @@ namespace ml_prm
|
|||
|
||||
MovementSystem.Instance.SetImmobilized(true);
|
||||
PlayerSetup.Instance.animatorManager.SetAnimatorParameterTrigger("CancelEmote");
|
||||
m_ragdolledParameter.SetValue(true);
|
||||
if(BodySystem.isCalibratedAsFullBody)
|
||||
BodySystem.TrackingPositionWeight = 0f;
|
||||
|
||||
|
@ -368,6 +372,7 @@ namespace ml_prm
|
|||
if(IsSafeToUnragdoll())
|
||||
{
|
||||
MovementSystem.Instance.SetImmobilized(false);
|
||||
m_ragdolledParameter.SetValue(false);
|
||||
if(BodySystem.isCalibratedAsFullBody)
|
||||
BodySystem.TrackingPositionWeight = 1f;
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AvatarBoolParameter.cs" />
|
||||
<Compile Include="RagdollTrigger.cs" />
|
||||
<Compile Include="Main.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue