mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-05 11:29:23 +00:00
Fall detection fix
This commit is contained in:
parent
f2dd49e787
commit
c8743158ac
1 changed files with 16 additions and 6 deletions
|
@ -136,14 +136,15 @@ namespace ml_prm
|
||||||
if(m_avatarReady && !m_enabled && Settings.FallDamage && !MovementSystem.Instance.flying)
|
if(m_avatarReady && !m_enabled && Settings.FallDamage && !MovementSystem.Instance.flying)
|
||||||
{
|
{
|
||||||
bool l_grounded = MovementSystem.Instance.IsGroundedRaw();
|
bool l_grounded = MovementSystem.Instance.IsGroundedRaw();
|
||||||
if(m_inAir && l_grounded && (m_inAirDistance > Settings.FallLimit))
|
bool l_inWater = MovementSystem.Instance.GetSubmerged();
|
||||||
|
if(m_inAir && l_grounded && !l_inWater && (m_inAirDistance > Settings.FallLimit))
|
||||||
{
|
{
|
||||||
m_inAirDistance = 0f;
|
m_inAirDistance = 0f;
|
||||||
SwitchRagdoll();
|
SwitchRagdoll();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_inAir = !l_grounded;
|
m_inAir = !(l_grounded || l_inWater);
|
||||||
if(l_grounded)
|
if(!m_inAir)
|
||||||
m_inAirDistance = 0f;
|
m_inAirDistance = 0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,11 +436,12 @@ namespace ml_prm
|
||||||
if(m_avatarReady && m_enabled)
|
if(m_avatarReady && m_enabled)
|
||||||
SwitchRagdoll();
|
SwitchRagdoll();
|
||||||
|
|
||||||
|
ResetStates();
|
||||||
|
|
||||||
OnGravityChange(Settings.Gravity);
|
OnGravityChange(Settings.Gravity);
|
||||||
OnPhysicsMaterialChange(true);
|
OnPhysicsMaterialChange(true);
|
||||||
OnMovementDragChange(Settings.MovementDrag);
|
OnMovementDragChange(Settings.MovementDrag);
|
||||||
OnBuoyancyChange(Settings.Buoyancy);
|
OnBuoyancyChange(Settings.Buoyancy);
|
||||||
OnFallDamageChange(Settings.FallDamage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void OnCombatDown()
|
internal void OnCombatDown()
|
||||||
|
@ -455,7 +457,7 @@ namespace ml_prm
|
||||||
|
|
||||||
internal void OnChangeFlight()
|
internal void OnChangeFlight()
|
||||||
{
|
{
|
||||||
OnFallDamageChange(Settings.FallDamage);
|
ResetStates();
|
||||||
|
|
||||||
if(m_avatarReady && m_enabled && MovementSystem.Instance.flying)
|
if(m_avatarReady && m_enabled && MovementSystem.Instance.flying)
|
||||||
{
|
{
|
||||||
|
@ -467,7 +469,7 @@ namespace ml_prm
|
||||||
|
|
||||||
internal void OnPlayerTeleport()
|
internal void OnPlayerTeleport()
|
||||||
{
|
{
|
||||||
OnFallDamageChange(Settings.FallDamage);
|
ResetStates();
|
||||||
|
|
||||||
if(m_avatarReady && m_enabled)
|
if(m_avatarReady && m_enabled)
|
||||||
m_ragdollLastPos = m_puppetReferences.hips.position;
|
m_ragdollLastPos = m_puppetReferences.hips.position;
|
||||||
|
@ -669,6 +671,14 @@ namespace ml_prm
|
||||||
|
|
||||||
public bool IsRagdolled() => (m_avatarReady && m_enabled);
|
public bool IsRagdolled() => (m_avatarReady && m_enabled);
|
||||||
|
|
||||||
|
void ResetStates()
|
||||||
|
{
|
||||||
|
m_lastPosition = this.transform.position;
|
||||||
|
m_velocity = Vector3.zero;
|
||||||
|
m_inAir = false;
|
||||||
|
m_inAirDistance = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
static Transform CloneTransform(Transform p_source, Transform p_parent, string p_name)
|
static Transform CloneTransform(Transform p_source, Transform p_parent, string p_name)
|
||||||
{
|
{
|
||||||
Transform l_target = new GameObject(p_name).transform;
|
Transform l_target = new GameObject(p_name).transform;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue