OverrideFixChange;
internal static void Init()
{
@@ -53,7 +48,6 @@ namespace ml_amt
ms_category.CreateEntry(ModSetting.IKOverrideJump.ToString(), IKOverrideJump),
ms_category.CreateEntry(ModSetting.DetectEmotes.ToString(), DetectEmotes),
ms_category.CreateEntry(ModSetting.FollowHips.ToString(), FollowHips),
- ms_category.CreateEntry(ModSetting.ScaledJump.ToString(), ScaledJump),
ms_category.CreateEntry(ModSetting.MassCenter.ToString(), MassCenter)
};
@@ -64,7 +58,6 @@ namespace ml_amt
DetectEmotes = (bool)ms_entries[(int)ModSetting.DetectEmotes].BoxedValue;
FollowHips = (bool)ms_entries[(int)ModSetting.FollowHips].BoxedValue;
MassCenter = (bool)ms_entries[(int)ModSetting.MassCenter].BoxedValue;
- ScaledJump = (bool)ms_entries[(int)ModSetting.ScaledJump].BoxedValue;
MelonLoader.MelonCoroutines.Start(WaitMainMenuUi());
}
@@ -156,13 +149,6 @@ namespace ml_amt
MassCenterChange?.Invoke(MassCenter);
}
break;
-
- case ModSetting.ScaledJump:
- {
- ScaledJump = bool.Parse(p_value);
- ScaledJumpChange?.Invoke(ScaledJump);
- }
- break;
}
ms_entries[(int)l_setting].BoxedValue = bool.Parse(p_value);
diff --git a/ml_amt/Utils.cs b/ml_amt/Utils.cs
index 7b272f2..149f66a 100644
--- a/ml_amt/Utils.cs
+++ b/ml_amt/Utils.cs
@@ -21,13 +21,6 @@ namespace ml_amt
public static bool HasToes(this IKSolverVR p_instance) => (bool)ms_hasToes.GetValue(p_instance);
public static bool IsWorldSafe() => ((CVRWorld.Instance != null) && CVRWorld.Instance.allowFlying);
- public static float GetWorldJumpHeight()
- {
- float l_result = 1f;
- if(CVRWorld.Instance != null)
- l_result = CVRWorld.Instance.jumpHeight;
- return l_result;
- }
public static float GetWorldMovementLimit()
{
float l_result = 1f;
diff --git a/ml_amt/resources/menu.js b/ml_amt/resources/menu.js
index 5b15ac9..6df4b72 100644
--- a/ml_amt/resources/menu.js
+++ b/ml_amt/resources/menu.js
@@ -228,15 +228,6 @@ function inp_toggle_mod_amt(_obj, _callbackName) {
-
- Avatar independent game fixes/overhauls
-
-
-
Scaled locomotion jump:
-
-
`;
document.getElementById('settings-ik').appendChild(l_block);
diff --git a/ml_drs/Properties/AssemblyInfo.cs b/ml_drs/Properties/AssemblyInfo.cs
index b7b5255..627e372 100644
--- a/ml_drs/Properties/AssemblyInfo.cs
+++ b/ml_drs/Properties/AssemblyInfo.cs
@@ -1,6 +1,4 @@
-using System.Reflection;
-
-[assembly: MelonLoader.MelonInfo(typeof(ml_drs.DesktopReticleSwitch), "DesktopReticleSwitch", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_drs.DesktopReticleSwitch), "DesktopReticleSwitch", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
-[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
\ No newline at end of file
+[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
diff --git a/ml_egn/Properties/AssemblyInfo.cs b/ml_egn/Properties/AssemblyInfo.cs
index 0e062d0..5b1b103 100644
--- a/ml_egn/Properties/AssemblyInfo.cs
+++ b/ml_egn/Properties/AssemblyInfo.cs
@@ -1,6 +1,4 @@
-using System.Reflection;
-
-[assembly: MelonLoader.MelonInfo(typeof(ml_egn.ExtendedGameNotifications), "ExtendedGameNotifications", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_egn.ExtendedGameNotifications), "ExtendedGameNotifications", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
-[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
\ No newline at end of file
+[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
diff --git a/ml_gmf/Properties/AssemblyInfo.cs b/ml_gmf/Properties/AssemblyInfo.cs
index 090e44c..9fa7d85 100644
--- a/ml_gmf/Properties/AssemblyInfo.cs
+++ b/ml_gmf/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
[assembly: MelonLoader.MelonInfo(typeof(ml_gmf.GameMainFixes), "GameMainFixes", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
-[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
\ No newline at end of file
+[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
diff --git a/ml_gmf/README.md b/ml_gmf/README.md
index 5357f2b..54b323b 100644
--- a/ml_gmf/README.md
+++ b/ml_gmf/README.md
@@ -14,4 +14,4 @@ This mod fixes some issues that are present in game
* Fix of animation replacement (chairs, etc.) that leads to broken avatar animator ([feedback post](https://feedback.abinteractive.net/p/gestures-getting-stuck-locally-upon-entering-vehicles-chairs))
# Notes
-Some of fixes will be implemented natively in game after 2023r172ex3
+All these fixes are implemented natively in 2023r172ex4 build.
diff --git a/ml_lme/DependenciesHandler.cs b/ml_lme/DependenciesHandler.cs
index 0dd928b..dec1bdd 100644
--- a/ml_lme/DependenciesHandler.cs
+++ b/ml_lme/DependenciesHandler.cs
@@ -20,7 +20,7 @@ namespace ml_lme
foreach(string l_library in ms_libraries)
{
- Stream l_libraryStream = l_assembly.GetManifestResourceStream(l_assemblyName + "." + l_library);
+ Stream l_libraryStream = l_assembly.GetManifestResourceStream(l_assemblyName + ".resources." + l_library);
if(!File.Exists(l_library))
{
diff --git a/ml_lme/ml_lme.csproj b/ml_lme/ml_lme.csproj
index c872df0..53485ed 100644
--- a/ml_lme/ml_lme.csproj
+++ b/ml_lme/ml_lme.csproj
@@ -33,7 +33,7 @@
- LeapC.dll
+ resources/LeapC.dll
diff --git a/ml_pam/Properties/AssemblyInfo.cs b/ml_pam/Properties/AssemblyInfo.cs
index f44d90c..98b6c8a 100644
--- a/ml_pam/Properties/AssemblyInfo.cs
+++ b/ml_pam/Properties/AssemblyInfo.cs
@@ -1,7 +1,5 @@
-using System.Reflection;
-
-[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.0.6", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.0.6", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(1)]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
-[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
\ No newline at end of file
+[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
diff --git a/ml_pam/Utils.cs b/ml_pam/Utils.cs
index fc1a2ab..a9131bb 100644
--- a/ml_pam/Utils.cs
+++ b/ml_pam/Utils.cs
@@ -6,12 +6,8 @@ namespace ml_pam
{
static class Utils
{
- static FieldInfo ms_cohtmlView = typeof(CohtmlControlledViewDisposable).GetField("_view", BindingFlags.NonPublic | BindingFlags.Instance);
-
public static bool IsInVR() => ((ABI_RC.Core.Savior.CheckVR.Instance != null) && ABI_RC.Core.Savior.CheckVR.Instance.hasVrDeviceLoaded);
- public static void ExecuteScript(this CohtmlControlledViewDisposable p_instance, string p_script) => ((cohtml.Net.View)ms_cohtmlView.GetValue(p_instance))?.ExecuteScript(p_script);
-
// Extensions
public static Matrix4x4 GetMatrix(this Transform p_transform, bool p_pos = true, bool p_rot = true, bool p_scl = false)
{
diff --git a/ml_pmc/Properties/AssemblyInfo.cs b/ml_pmc/Properties/AssemblyInfo.cs
index 77e070e..13a64db 100644
--- a/ml_pmc/Properties/AssemblyInfo.cs
+++ b/ml_pmc/Properties/AssemblyInfo.cs
@@ -1,8 +1,6 @@
-using System.Reflection;
-
-[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(3)]
[assembly: MelonLoader.MelonAdditionalDependencies("BTKUILib")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
-[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
\ No newline at end of file
+[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
diff --git a/ml_prm/Properties/AssemblyInfo.cs b/ml_prm/Properties/AssemblyInfo.cs
index a38953e..4f802c3 100644
--- a/ml_prm/Properties/AssemblyInfo.cs
+++ b/ml_prm/Properties/AssemblyInfo.cs
@@ -1,7 +1,7 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.0.8", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.0.9", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(2)]
[assembly: MelonLoader.MelonOptionalDependencies("BTKUILib")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
-[assembly: MelonLoader.MelonAdditionalCredits("kafeijao, NotAKidOnSteam")]
\ No newline at end of file
+[assembly: MelonLoader.MelonAdditionalCredits("kafeijao, NotAKidOnSteam")]
diff --git a/ml_prm/README.md b/ml_prm/README.md
index d9c649f..96c6aa3 100644
--- a/ml_prm/README.md
+++ b/ml_prm/README.md
@@ -34,6 +34,9 @@ Optional mod's settings page with [BTKUILib](https://github.com/BTK-Development/
* **Recover delay:** time delay for enabled `Auto recover` in seconds; `3.0` by default.
* **Reset settings:** resets mod settings to default.
+Optional mod's settings in [UIExpansionKit](https://github.com/ddakebono/ChilloutMods):
+* **Hotkey:** system key that is used to switch ragdoll state; `R` by 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.
diff --git a/ml_prm/RagdollController.cs b/ml_prm/RagdollController.cs
index bc2a664..129a1ac 100644
--- a/ml_prm/RagdollController.cs
+++ b/ml_prm/RagdollController.cs
@@ -15,6 +15,8 @@ namespace ml_prm
[DisallowMultipleComponent]
public class RagdollController : MonoBehaviour
{
+ const float c_defaultFriction = 0.6f;
+
public static RagdollController Instance { get; private set; } = null;
VRIK m_vrIK = null;
@@ -56,8 +58,8 @@ namespace ml_prm
m_jointAnchors = new List>();
m_physicsMaterial = new PhysicMaterial("Ragdoll");
- m_physicsMaterial.dynamicFriction = 0.5f;
- m_physicsMaterial.staticFriction = 0.5f;
+ m_physicsMaterial.dynamicFriction = c_defaultFriction;
+ m_physicsMaterial.staticFriction = c_defaultFriction;
m_physicsMaterial.frictionCombine = PhysicMaterialCombine.Average;
m_physicsMaterial.bounciness = 0f;
m_physicsMaterial.bounceCombine = PhysicMaterialCombine.Average;
@@ -145,7 +147,7 @@ namespace ml_prm
if((m_customTrigger != null) && m_customTrigger.GetStateWithReset() && m_avatarReady && !m_enabled && Settings.PointersReaction)
SwitchRagdoll();
- if(Settings.Hotkey && Input.GetKeyDown(KeyCode.R) && !ViewManager.Instance.isGameMenuOpen())
+ if(Settings.Hotkey && Input.GetKeyDown(Settings.HotkeyKey) && !ViewManager.Instance.isGameMenuOpen())
SwitchRagdoll();
if(m_avatarReady && m_enabled && CVRInputManager.Instance.jump && Settings.JumpRecover)
@@ -415,8 +417,8 @@ namespace ml_prm
{
bool l_slipperiness = (Settings.Slipperiness && Utils.IsWorldSafe());
bool l_bounciness = (Settings.Bounciness && Utils.IsWorldSafe());
- m_physicsMaterial.dynamicFriction = (l_slipperiness ? 0f : 0.5f);
- m_physicsMaterial.staticFriction = (l_slipperiness ? 0f : 0.5f);
+ m_physicsMaterial.dynamicFriction = (l_slipperiness ? 0f : c_defaultFriction);
+ m_physicsMaterial.staticFriction = (l_slipperiness ? 0f : c_defaultFriction);
m_physicsMaterial.frictionCombine = (l_slipperiness ? PhysicMaterialCombine.Minimum : PhysicMaterialCombine.Average);
m_physicsMaterial.bounciness = (l_bounciness ? 1f : 0f);
m_physicsMaterial.bounceCombine = (l_bounciness ? PhysicMaterialCombine.Maximum : PhysicMaterialCombine.Average);
diff --git a/ml_prm/Settings.cs b/ml_prm/Settings.cs
index e5d92f7..d4e8f1d 100644
--- a/ml_prm/Settings.cs
+++ b/ml_prm/Settings.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using UnityEngine;
namespace ml_prm
@@ -10,6 +9,7 @@ namespace ml_prm
public enum ModSetting
{
Hotkey = 0,
+ HotkeyKey,
VelocityMultiplier,
MovementDrag,
AngularDrag,
@@ -26,6 +26,7 @@ namespace ml_prm
}
public static bool Hotkey { get; private set; } = true;
+ public static KeyCode HotkeyKey { get; private set; } = KeyCode.R;
public static float VelocityMultiplier { get; private set; } = 2f;
public static float MovementDrag { get; private set; } = 2f;
public static float AngularDrag { get; private set; } = 2f;
@@ -41,6 +42,7 @@ namespace ml_prm
public static bool JumpRecover { get; private set; } = false;
static public event Action HotkeyChange;
+ static public event Action HotkeyKeyChange;
static public event Action VelocityMultiplierChange;
static public event Action MovementDragChange;
static public event Action AngularDragChange;
@@ -60,26 +62,31 @@ namespace ml_prm
internal static void Init()
{
- ms_category = MelonLoader.MelonPreferences.CreateCategory("PRM", null, true);
+ ms_category = MelonLoader.MelonPreferences.CreateCategory("PRM", "Player Ragdoll Mod");
+
ms_entries = new List()
{
- ms_category.CreateEntry(ModSetting.Hotkey.ToString(), Hotkey),
- ms_category.CreateEntry(ModSetting.VelocityMultiplier.ToString(), VelocityMultiplier),
- ms_category.CreateEntry(ModSetting.MovementDrag.ToString(), MovementDrag),
- ms_category.CreateEntry(ModSetting.AngularDrag.ToString(), AngularDrag),
- ms_category.CreateEntry(ModSetting.Gravity.ToString(), Gravity),
- ms_category.CreateEntry(ModSetting.PointersReaction.ToString(), PointersReaction),
- ms_category.CreateEntry(ModSetting.IgnoreLocal.ToString(), IgnoreLocal),
- ms_category.CreateEntry(ModSetting.CombatReaction.ToString(), CombatReaction),
- ms_category.CreateEntry(ModSetting.AutoRecover.ToString(), AutoRecover),
- ms_category.CreateEntry(ModSetting.RecoverDelay.ToString(), RecoverDelay),
- ms_category.CreateEntry(ModSetting.Slipperiness.ToString(), Slipperiness),
- ms_category.CreateEntry(ModSetting.Bounciness.ToString(), Bounciness),
- ms_category.CreateEntry(ModSetting.ViewVelocity.ToString(), ViewVelocity),
- ms_category.CreateEntry(ModSetting.JumpRecover.ToString(), JumpRecover)
+ ms_category.CreateEntry(ModSetting.Hotkey.ToString(), Hotkey, null, null, true),
+ ms_category.CreateEntry(ModSetting.HotkeyKey.ToString(), HotkeyKey, "Hotkey"),
+ ms_category.CreateEntry(ModSetting.VelocityMultiplier.ToString(), VelocityMultiplier, null, null, true),
+ ms_category.CreateEntry(ModSetting.MovementDrag.ToString(), MovementDrag, null, null, true),
+ ms_category.CreateEntry(ModSetting.AngularDrag.ToString(), AngularDrag, null, null, true),
+ ms_category.CreateEntry(ModSetting.Gravity.ToString(), Gravity, null, null, true),
+ ms_category.CreateEntry(ModSetting.PointersReaction.ToString(), PointersReaction, null, null, true),
+ ms_category.CreateEntry(ModSetting.IgnoreLocal.ToString(), IgnoreLocal, null, null, true),
+ ms_category.CreateEntry(ModSetting.CombatReaction.ToString(), CombatReaction, null, null, true),
+ ms_category.CreateEntry(ModSetting.AutoRecover.ToString(), AutoRecover, null, null, true),
+ ms_category.CreateEntry(ModSetting.RecoverDelay.ToString(), RecoverDelay, null, null, true),
+ ms_category.CreateEntry(ModSetting.Slipperiness.ToString(), Slipperiness, null, null, true),
+ ms_category.CreateEntry(ModSetting.Bounciness.ToString(), Bounciness, null, null, true),
+ ms_category.CreateEntry(ModSetting.ViewVelocity.ToString(), ViewVelocity, null, null, true),
+ ms_category.CreateEntry(ModSetting.JumpRecover.ToString(), JumpRecover, null, null, true)
};
+ ms_entries[(int)ModSetting.HotkeyKey].OnEntryValueChangedUntyped.Subscribe(OnMelonSettingSave_HotkeyKey);
+
Hotkey = (bool)ms_entries[(int)ModSetting.Hotkey].BoxedValue;
+ HotkeyKey = (KeyCode)ms_entries[(int)ModSetting.HotkeyKey].BoxedValue;
VelocityMultiplier = Mathf.Clamp((float)ms_entries[(int)ModSetting.VelocityMultiplier].BoxedValue, 1f, 50f);
MovementDrag = Mathf.Clamp((float)ms_entries[(int)ModSetting.MovementDrag].BoxedValue, 0f, 50f);
AngularDrag = Mathf.Clamp((float)ms_entries[(int)ModSetting.AngularDrag].BoxedValue, 0f, 50f);
@@ -95,6 +102,15 @@ namespace ml_prm
JumpRecover = (bool)ms_entries[(int)ModSetting.JumpRecover].BoxedValue;
}
+ static void OnMelonSettingSave_HotkeyKey(object p_oldValue, object p_newValue)
+ {
+ if(p_newValue is KeyCode)
+ {
+ HotkeyKey = (KeyCode)p_newValue;
+ HotkeyKeyChange?.Invoke(HotkeyKey);
+ }
+ }
+
public static void SetSetting(ModSetting p_settings, object p_value)
{
switch(p_settings)
diff --git a/ml_prm/ml_prm.csproj b/ml_prm/ml_prm.csproj
index ffb3458..f850914 100644
--- a/ml_prm/ml_prm.csproj
+++ b/ml_prm/ml_prm.csproj
@@ -4,7 +4,7 @@
netstandard2.1
x64
PlayerRagdollMod
- 1.0.8
+ 1.0.9
SDraw
None
PlayerRagdollMod