From 427c346ba2518d36d06b283e3749326e870297c8 Mon Sep 17 00:00:00 2001 From: SDraw Date: Tue, 18 Apr 2023 20:32:28 +0300 Subject: [PATCH] Drag limitation --- ml_prm/README.md | 1 + ml_prm/RagdollController.cs | 4 +++- ml_prm/Settings.cs | 33 ++++++++++++++++++++++----------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/ml_prm/README.md b/ml_prm/README.md index c81013e..6cea7e2 100644 --- a/ml_prm/README.md +++ b/ml_prm/README.md @@ -28,6 +28,7 @@ Optional mod's settings with [BTKUILib](https://github.com/BTK-Development/BTKUI * Note: Limited according to world's fly multiplier. * Note: Forcibly set to `1.0` in worlds that don't allow flight. * **Movement drag:** movement resistance; `2.0` by default. + * Note: Forcibly set to `0.0` in worlds that don't allow flight. * **Angular movement drag:** angular movement resistance; `2.0` by default. * **Recover delay:** time delay for enabled `Auto recover` in seconds; `3.0` by default. * **Reset settings:** resets mod settings to default. diff --git a/ml_prm/RagdollController.cs b/ml_prm/RagdollController.cs index 29e378c..f5037dc 100644 --- a/ml_prm/RagdollController.cs +++ b/ml_prm/RagdollController.cs @@ -302,6 +302,7 @@ namespace ml_prm OnGravityChange(Settings.Gravity); OnPhysicsMaterialChange(true); + OnMovementDragChange(Settings.MovementDrag); } internal void OnCombatDown() @@ -336,9 +337,10 @@ namespace ml_prm { if(m_avatarReady) { + float l_drag = (Utils.IsWorldSafe() ? p_value : 0f); foreach(Rigidbody l_body in m_rigidBodies) { - l_body.drag = p_value; + l_body.drag = l_drag; if(m_enabled) l_body.WakeUp(); } diff --git a/ml_prm/Settings.cs b/ml_prm/Settings.cs index 86f05e6..502af1d 100644 --- a/ml_prm/Settings.cs +++ b/ml_prm/Settings.cs @@ -190,43 +190,50 @@ namespace ml_prm { PointersReaction = p_state; PointersReactionChange?.Invoke(p_state); - } break; + } + break; case ModSetting.IgnoreLocal: { IgnoreLocal = p_state; IgnoreLocalChange?.Invoke(p_state); - } break; + } + break; case ModSetting.CombatReaction: { CombatReaction = p_state; CombatReactionChange?.Invoke(p_state); - } break; + } + break; case ModSetting.AutoRecover: { AutoRecover = p_state; AutoRecoverChange?.Invoke(p_state); - } break; + } + break; case ModSetting.Slipperiness: { Slipperiness = p_state; SlipperinessChange?.Invoke(p_state); - } break; + } + break; case ModSetting.Bounciness: { Bounciness = p_state; BouncinessChange?.Invoke(p_state); - } break; + } + break; case ModSetting.ViewVelocity: { ViewVelocity = p_state; ViewVelocityChange?.Invoke(p_state); - } break; + } + break; } ms_entries[(int)p_setting].BoxedValue = p_state; @@ -242,25 +249,29 @@ namespace ml_prm { VelocityMultiplier = p_value; VelocityMultiplierChange?.Invoke(p_value); - } break; + } + break; case ModSetting.MovementDrag: { MovementDrag = p_value; MovementDragChange?.Invoke(p_value); - } break; + } + break; case ModSetting.AngularDrag: { AngularDrag = p_value; AngularDragChange?.Invoke(p_value); - } break; + } + break; case ModSetting.RecoverDelay: { RecoverDelay = p_value; RecoverDelayChange?.Invoke(p_value); - } break; + } + break; } ms_entries[(int)p_setting].BoxedValue = p_value;