diff --git a/README.md b/README.md
index 82603ba..c5a1e4f 100644
--- a/README.md
+++ b/README.md
@@ -3,18 +3,18 @@ Merged set of MelonLoader mods for ChilloutVR.
**Table for game build 2025r180:**
| Full name | Latest version |
|:---------:|:--------------:|
-|[Avatar Motion Tweaker](/ml_amt/README.md)|1.5.2 [:arrow_down:](../../releases/download/r180/AvatarMotionTweaker.dll)|
-|[Avatar Synced Look](/ml_asl/README.md)|1.1.2 [:arrow_down:](../../releases/download/r180/AvatarSyncedLook.dll)|
-|[Better Fingers Tracking](/ml_bft/README.md)|1.1.3 [:arrow_down:](../../releases/download/r180/BetterFingersTracking.dll)|
-|[Leap Motion Extension](/ml_lme/README.md)| 1.6.2 [:arrow_down:](../../releases/download/r180/LeapMotionExtension.dll)|
-|[Pickup Arm Movement](/ml_pam/README.md)|1.2.3 [:arrow_down:](../../releases/download/r180/PickupArmMovement.dll)|
-|[Player Avatar History](/ml_pah/README.md)|1.0.0 [:arrow_down:](../../releases/download/r180/PlayerAvatarHistory.dll)|
-|[Player Movement Copycat](/ml_pmc/README.md)|1.1.2 [:arrow_down:](../../releases/download/r180/PlayerMovementCopycat.dll)|
-|[Player Pick Up](/ml_ppu/README.md)|1.0.1 [:arrow_down:](../../releases/download/r180/PlayerPickUp.dll)|
-|[Player Ragdoll Mod](/ml_prm/README.md)|1.2.4 [:arrow_down:](../../releases/download/r180/PlayerRagdollMod.dll)|
-|[Players Instance Notifier](/ml_pin/README.md)|1.1.2 [:arrow_down:](../../releases/download/r180/PlayersInstanceNotifier.dll)|
-|[Vive Extended Input](/ml_vei/README.md)|1.1.2 [:arrow_down:](../../releases/download/r180/ViveExtendedInput.dll)|
-|[Video Player Cookies](/ml_vpc/README.md)|1.0.3 [:arrow_down:](../../releases/download/r180/VideoPlayerCookies.dll)|
+|[Avatar Motion Tweaker](/ml_amt/README.md)|1.5.3 [:arrow_down:](../../releases/download/r181/AvatarMotionTweaker.dll)|
+|[Avatar Synced Look](/ml_asl/README.md)|1.1.3 [:arrow_down:](../../releases/download/r181/AvatarSyncedLook.dll)|
+|[Better Fingers Tracking](/ml_bft/README.md)|1.1.4 [:arrow_down:](../../releases/download/r181/BetterFingersTracking.dll)|
+|[Leap Motion Extension](/ml_lme/README.md)| 1.6.4 [:arrow_down:](../../releases/download/r181/LeapMotionExtension.dll)|
+|[Pickup Arm Movement](/ml_pam/README.md)|1.2.4 [:arrow_down:](../../releases/download/r181/PickupArmMovement.dll)|
+|[Player Avatar History](/ml_pah/README.md)|1.0.1 [:arrow_down:](../../releases/download/r181/PlayerAvatarHistory.dll)|
+|[Player Movement Copycat](/ml_pmc/README.md)|1.1.3 [:arrow_down:](../../releases/download/r181/PlayerMovementCopycat.dll)|
+|[Player Pick Up](/ml_ppu/README.md)|1.0.2 [:arrow_down:](../../releases/download/r181/PlayerPickUp.dll)|
+|[Player Ragdoll Mod](/ml_prm/README.md)|1.2.5 [:arrow_down:](../../releases/download/r181/PlayerRagdollMod.dll)|
+|[Players Instance Notifier](/ml_pin/README.md)|1.1.3 [:arrow_down:](../../releases/download/r181/PlayersInstanceNotifier.dll)|
+|[Vive Extended Input](/ml_vei/README.md)|1.1.3 [:arrow_down:](../../releases/download/r181/ViveExtendedInput.dll)|
+|[Video Player Cookies](/ml_vpc/README.md)|1.0.4 [:arrow_down:](../../releases/download/r181/VideoPlayerCookies.dll)|
diff --git a/ml_amt/Properties/AssemblyInfo.cs b/ml_amt/Properties/AssemblyInfo.cs
index 003591e..8da9421 100644
--- a/ml_amt/Properties/AssemblyInfo.cs
+++ b/ml_amt/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.5.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.5.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)]
diff --git a/ml_amt/ml_amt.csproj b/ml_amt/ml_amt.csproj
index 13765dd..88f5e34 100644
--- a/ml_amt/ml_amt.csproj
+++ b/ml_amt/ml_amt.csproj
@@ -6,7 +6,7 @@
SDraw
AvatarMotionTweaker
AvatarMotionTweaker
- 1.5.2
+ 1.5.3
x64
AvatarMotionTweaker
diff --git a/ml_asl/Main.cs b/ml_asl/Main.cs
index 75f5c06..df252f1 100644
--- a/ml_asl/Main.cs
+++ b/ml_asl/Main.cs
@@ -1,4 +1,6 @@
using ABI_RC.Core.Player;
+using ABI_RC.Systems.FaceTracking;
+using System;
using System.Reflection;
using UnityEngine;
@@ -13,22 +15,29 @@ namespace ml_asl
Settings.Init();
HarmonyInstance.Patch(
- typeof(PlayerSetup).GetMethod("UpdatePlayerAvatarMovementData", BindingFlags.Instance | BindingFlags.NonPublic ),
+ typeof(PlayerSetup).GetMethod("UpdatePlayerAvatarMovementData", BindingFlags.Instance | BindingFlags.NonPublic),
null,
- new HarmonyLib.HarmonyMethod(typeof(AvatarSyncedLook).GetMethod(nameof(OnPlayerAvatarMovementDataUpdate_Postfix), BindingFlags.Static | BindingFlags.NonPublic ))
+ new HarmonyLib.HarmonyMethod(typeof(AvatarSyncedLook).GetMethod(nameof(OnPlayerAvatarMovementDataUpdate_Postfix), BindingFlags.Static | BindingFlags.NonPublic))
);
}
static void OnPlayerAvatarMovementDataUpdate_Postfix(ref PlayerSetup __instance, PlayerAvatarMovementData ____playerAvatarMovementData)
{
- if(Settings.Enabled && (__instance.EyeMovementController != null))
+ try
{
- ____playerAvatarMovementData.EyeTrackingOverride = true;
+ if(Settings.Enabled && (__instance.EyeMovementController != null) && !FaceTrackingManager.Instance.IsEyeDataAvailable())
+ {
+ ____playerAvatarMovementData.EyeTrackingOverride = true;
- if(__instance.EyeMovementController.CurrentTarget != null)
- ____playerAvatarMovementData.EyeTrackingPosition = __instance.EyeMovementController.CurrentTarget.GetPosition();
- else
- ____playerAvatarMovementData.EyeTrackingPosition = (__instance.transform.GetMatrix() * ms_back).GetPosition();
+ if(__instance.EyeMovementController.CurrentTarget != null)
+ ____playerAvatarMovementData.EyeTrackingPosition = __instance.EyeMovementController.CurrentTarget.GetPosition();
+ else
+ ____playerAvatarMovementData.EyeTrackingPosition = (__instance.transform.GetMatrix() * ms_back).GetPosition();
+ }
+ }
+ catch(Exception e)
+ {
+ MelonLoader.MelonLogger.Error(e);
}
}
}
diff --git a/ml_asl/Properties/AssemblyInfo.cs b/ml_asl/Properties/AssemblyInfo.cs
index 578b743..8e44837 100644
--- a/ml_asl/Properties/AssemblyInfo.cs
+++ b/ml_asl/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_asl.AvatarSyncedLook), "AvatarSyncedLook", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_asl.AvatarSyncedLook), "AvatarSyncedLook", "1.1.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)]
diff --git a/ml_asl/ml_asl.csproj b/ml_asl/ml_asl.csproj
index bb73298..098cfa1 100644
--- a/ml_asl/ml_asl.csproj
+++ b/ml_asl/ml_asl.csproj
@@ -7,7 +7,7 @@
SDraw
SDraw
AvatarSyncedLook
- 1.1.2
+ 1.1.3
AvatarSyncedLook
diff --git a/ml_bft/Properties/AssemblyInfo.cs b/ml_bft/Properties/AssemblyInfo.cs
index 3a8006f..f0ac630 100644
--- a/ml_bft/Properties/AssemblyInfo.cs
+++ b/ml_bft/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_bft.BetterFingersTracking), "BetterFingersTracking", "1.1.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_bft.BetterFingersTracking), "BetterFingersTracking", "1.1.4", "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)]
diff --git a/ml_bft/ml_bft.csproj b/ml_bft/ml_bft.csproj
index 99dd28d..ae19a0d 100644
--- a/ml_bft/ml_bft.csproj
+++ b/ml_bft/ml_bft.csproj
@@ -7,7 +7,7 @@
SDraw
SDraw
BetterFingersTracking
- 1.1.3
+ 1.1.4
BetterFingersTracking
diff --git a/ml_lme/LeapInput.cs b/ml_lme/LeapInput.cs
index d760245..a97e86d 100644
--- a/ml_lme/LeapInput.cs
+++ b/ml_lme/LeapInput.cs
@@ -29,7 +29,7 @@ namespace ml_lme
public override void ModuleAdded()
{
base.ModuleAdded();
- base.InputEnabled = Settings.Enabled;
+ base.InputModuleEnabled = Settings.Enabled;
base.HapticFeedback = false;
m_inVR = Utils.IsInVR();
@@ -159,7 +159,7 @@ namespace ml_lme
public override void UpdateInput()
{
- if(base.InputEnabled)
+ if(base.InputModuleEnabled)
{
LeapParser.LeapData l_data = LeapManager.Instance.GetLatestData();
@@ -360,7 +360,7 @@ namespace ml_lme
// Settings changes
void OnEnableChanged(bool p_state)
{
- base.InputEnabled = p_state;
+ base.InputModuleEnabled = p_state;
m_handVisibleLeft &= p_state;
m_handVisibleRight &= p_state;
diff --git a/ml_lme/Properties/AssemblyInfo.cs b/ml_lme/Properties/AssemblyInfo.cs
index de7fe58..e383520 100644
--- a/ml_lme/Properties/AssemblyInfo.cs
+++ b/ml_lme/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_lme.LeapMotionExtension), "LeapMotionExtension", "1.6.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_lme.LeapMotionExtension), "LeapMotionExtension", "1.6.4", "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)]
diff --git a/ml_lme/ml_lme.csproj b/ml_lme/ml_lme.csproj
index 432064c..f4ee57b 100644
--- a/ml_lme/ml_lme.csproj
+++ b/ml_lme/ml_lme.csproj
@@ -4,7 +4,7 @@
netstandard2.1
x64
LeapMotionExtension
- 1.6.2
+ 1.6.4
SDraw
SDraw
LeapMotionExtension
diff --git a/ml_mods_cvr.sln b/ml_mods_cvr.sln
index 7094403..2731878 100644
--- a/ml_mods_cvr.sln
+++ b/ml_mods_cvr.sln
@@ -27,6 +27,9 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ml_vpc", "ml_vpc\ml_vpc.csproj", "{7CF37B93-9341-422D-845C-9AB96DB4D0A1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ml_ppu", "ml_ppu\ml_ppu.csproj", "{F16DF16B-D127-4A2A-81FF-2FD80F320E64}"
+ ProjectSection(ProjectDependencies) = postProject
+ {C4C3F080-379F-49DB-ADC6-6328BE884AE3} = {C4C3F080-379F-49DB-ADC6-6328BE884AE3}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ml_pah", "ml_pah\ml_pah.csproj", "{C4659F60-3FED-4F43-88E4-969907D4C7A6}"
EndProject
diff --git a/ml_pah/HistoryManager.cs b/ml_pah/HistoryManager.cs
index 235dbe5..69760c8 100644
--- a/ml_pah/HistoryManager.cs
+++ b/ml_pah/HistoryManager.cs
@@ -1,5 +1,6 @@
using ABI_RC.Core.Networking.API;
using ABI_RC.Core.Networking.API.Responses;
+using ABI_RC.Core.Networking.API.Responses.DetailsV2;
using Newtonsoft.Json;
using System;
using System.Collections;
@@ -178,12 +179,12 @@ namespace ml_pah
static async Task RequestAvatarInfoTask(AvatarEntry p_entry)
{
- BaseResponse l_baseResponse = await ApiConnection.MakeRequest(ApiConnection.ApiOperation.AvatarDetail, new { avatarID = p_entry.m_id });
+ BaseResponse l_baseResponse = await ApiConnection.MakeRequest(ApiConnection.ApiOperation.AvatarDetail, new { avatarID = p_entry.m_id }, "2");
if(l_baseResponse != null)
{
if(!l_baseResponse.IsSuccessStatusCode) return;
p_entry.m_name = l_baseResponse.Data.Name;
- p_entry.m_imageUrl = l_baseResponse.Data.ImageUrl;
+ p_entry.m_imageUrl = l_baseResponse.Data.Image.AbsoluteUri;
p_entry.m_cached = true;
}
}
diff --git a/ml_pah/Properties/AssemblyInfo.cs b/ml_pah/Properties/AssemblyInfo.cs
index f311837..2ae21cb 100644
--- a/ml_pah/Properties/AssemblyInfo.cs
+++ b/ml_pah/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_pah.PlayerAvatarHistory), "PlayerAvatarHistory", "1.0.0", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pah.PlayerAvatarHistory), "PlayerAvatarHistory", "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)]
diff --git a/ml_pah/ml_pah.csproj b/ml_pah/ml_pah.csproj
index 2d1f70f..cd5c23c 100644
--- a/ml_pah/ml_pah.csproj
+++ b/ml_pah/ml_pah.csproj
@@ -6,6 +6,7 @@
PlayerAvatarHistory
PlayerAvatarHistory
SDraw
+ 1.0.1
diff --git a/ml_pam/Properties/AssemblyInfo.cs b/ml_pam/Properties/AssemblyInfo.cs
index 07543c2..553607d 100644
--- a/ml_pam/Properties/AssemblyInfo.cs
+++ b/ml_pam/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.2.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pam.PickupArmMovement), "PickupArmMovement", "1.2.4", "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)]
diff --git a/ml_pam/ml_pam.csproj b/ml_pam/ml_pam.csproj
index fa8ddc0..cc099e6 100644
--- a/ml_pam/ml_pam.csproj
+++ b/ml_pam/ml_pam.csproj
@@ -4,7 +4,7 @@
netstandard2.1
x64
PickupArmMovement
- 1.2.3
+ 1.2.4
SDraw
SDraw
PickupArmMovement
diff --git a/ml_pin/Main.cs b/ml_pin/Main.cs
index 82e42a4..ea572ff 100644
--- a/ml_pin/Main.cs
+++ b/ml_pin/Main.cs
@@ -1,8 +1,6 @@
using ABI_RC.Core.AudioEffects;
using ABI_RC.Core.Networking.IO.Social;
using ABI_RC.Core.Player;
-using ABI_RC.Core.Savior;
-using ABI_RC.Core.Networking.IO.Instancing;
using ABI_RC.Systems.GameEventSystem;
using System;
using System.Collections;
@@ -111,9 +109,9 @@ namespace ml_pin
bool ShouldNotifyInCurrentInstance()
{
- bool l_isInPublic = ((MetaPort.Instance.CurrentInstancePrivacyType == Instances.InstancePrivacyType.Public) && Settings.NotifyInPublic);
- bool l_isInFriends = (((MetaPort.Instance.CurrentInstancePrivacyType == Instances.InstancePrivacyType.Friends) || (MetaPort.Instance.CurrentInstancePrivacyType == Instances.InstancePrivacyType.FriendsOfFriends)) && Settings.NotifyInFriends);
- bool l_isInPrivate = (((MetaPort.Instance.CurrentInstancePrivacyType == Instances.InstancePrivacyType.EveryoneCanInvite) || (MetaPort.Instance.CurrentInstancePrivacyType == Instances.InstancePrivacyType.OwnerMustInvite)) && Settings.NotifyInPrivate);
+ bool l_isInPublic = Utils.IsInPublicInstance() && Settings.NotifyInPublic;
+ bool l_isInFriends = Utils.IsInFriendsInstance() && Settings.NotifyInFriends;
+ bool l_isInPrivate = Utils.IsInPrivateInstance() && Settings.NotifyInPrivate;
return (l_isInPublic || l_isInFriends || l_isInPrivate);
}
}
diff --git a/ml_pin/Properties/AssemblyInfo.cs b/ml_pin/Properties/AssemblyInfo.cs
index 3447171..ab61d02 100644
--- a/ml_pin/Properties/AssemblyInfo.cs
+++ b/ml_pin/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_pin.PlayersInstanceNotifier), "PlayersInstanceNotifier", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pin.PlayersInstanceNotifier), "PlayersInstanceNotifier", "1.1.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)]
diff --git a/ml_pin/Utils.cs b/ml_pin/Utils.cs
index df46c70..846b0eb 100644
--- a/ml_pin/Utils.cs
+++ b/ml_pin/Utils.cs
@@ -1,3 +1,4 @@
+using ABI_RC.Core.Networking.IO.Instancing;
using ABI_RC.Core.UI;
using System.Reflection;
@@ -8,5 +9,47 @@ namespace ml_pin
static readonly FieldInfo ms_view = typeof(CohtmlControlledViewWrapper).GetField("_view", BindingFlags.Instance | BindingFlags.NonPublic);
public static void ExecuteScript(this CohtmlControlledViewWrapper p_instance, string p_script) => (ms_view?.GetValue(p_instance) as cohtml.Net.View)?.ExecuteScript(p_script);
+
+ // Instance info
+ public static bool IsInPublicInstance()
+ {
+ bool l_result = false;
+ switch(Instances.CurrentInstancePrivacyType)
+ {
+ case Instances.InstancePrivacyType.Public:
+ case Instances.InstancePrivacyType.GroupPublic:
+ l_result = true;
+ break;
+ }
+ return l_result;
+ }
+
+ public static bool IsInFriendsInstance()
+ {
+ bool l_result = false;
+ switch(Instances.CurrentInstancePrivacyType)
+ {
+ case Instances.InstancePrivacyType.Friends:
+ case Instances.InstancePrivacyType.FriendsOfFriends:
+ case Instances.InstancePrivacyType.GroupPlus:
+ l_result = true;
+ break;
+ }
+ return l_result;
+ }
+
+ public static bool IsInPrivateInstance()
+ {
+ bool l_result = false;
+ switch(Instances.CurrentInstancePrivacyType)
+ {
+ case Instances.InstancePrivacyType.EveryoneCanInvite:
+ case Instances.InstancePrivacyType.OwnerMustInvite:
+ case Instances.InstancePrivacyType.Group:
+ l_result = true;
+ break;
+ }
+ return l_result;
+ }
}
}
diff --git a/ml_pin/ml_pin.csproj b/ml_pin/ml_pin.csproj
index c53bcaf..9f28bde 100644
--- a/ml_pin/ml_pin.csproj
+++ b/ml_pin/ml_pin.csproj
@@ -7,7 +7,7 @@
SDraw
SDraw
PlayersInstanceNotifier
- 1.1.2
+ 1.1.3
PlayersInstanceNotifier
diff --git a/ml_pmc/Properties/AssemblyInfo.cs b/ml_pmc/Properties/AssemblyInfo.cs
index ff06217..50bd068 100644
--- a/ml_pmc/Properties/AssemblyInfo.cs
+++ b/ml_pmc/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_pmc.PlayerMovementCopycat), "PlayerMovementCopycat", "1.1.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(3)]
[assembly: MelonLoader.MelonAdditionalDependencies("BTKUILib")]
diff --git a/ml_pmc/ml_pmc.csproj b/ml_pmc/ml_pmc.csproj
index 65f409f..3d443bf 100644
--- a/ml_pmc/ml_pmc.csproj
+++ b/ml_pmc/ml_pmc.csproj
@@ -7,7 +7,7 @@
SDraw
SDraw
PlayerMovementCopycat
- 1.1.2
+ 1.1.3
PlayerMovementCopycat
diff --git a/ml_ppu/AvatarParameter.cs b/ml_ppu/AvatarParameter.cs
new file mode 100644
index 0000000..c88b55e
--- /dev/null
+++ b/ml_ppu/AvatarParameter.cs
@@ -0,0 +1,109 @@
+using ABI_RC.Core.Util.AnimatorManager;
+using System.Text.RegularExpressions;
+using UnityEngine;
+
+namespace ml_ppu
+{
+ class AvatarParameter
+ {
+ public readonly string m_name;
+ public readonly int m_hash = 0;
+ public readonly bool m_sync;
+ public readonly AnimatorControllerParameterType m_type;
+ readonly AvatarAnimatorManager m_manager = null;
+
+ public AvatarParameter(string p_name, AvatarAnimatorManager 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))
+ {
+ m_name = l_param.name;
+ m_sync = !l_param.name.StartsWith('#');
+ m_hash = l_param.nameHash;
+ m_type = l_param.type;
+ break;
+ }
+ }
+ }
+
+ public void SetValue(bool p_value)
+ {
+ if(m_hash != 0)
+ {
+ if(m_sync)
+ m_manager.SetParameter(m_name, p_value);
+ else
+ {
+ switch(m_type)
+ {
+ case AnimatorControllerParameterType.Bool:
+ case AnimatorControllerParameterType.Trigger:
+ m_manager.Animator.SetBool(m_hash, p_value);
+ break;
+ case AnimatorControllerParameterType.Int:
+ m_manager.Animator.SetInteger(m_hash, p_value ? 1 : 0);
+ break;
+ case AnimatorControllerParameterType.Float:
+ m_manager.Animator.SetFloat(m_hash, p_value ? 1f : 0f);
+ break;
+ }
+ }
+ }
+ }
+
+ public void SetValue(int p_value)
+ {
+ if(m_hash != 0)
+ {
+ if(m_sync)
+ m_manager.SetParameter(m_name, p_value);
+ else
+ {
+ switch(m_type)
+ {
+ case AnimatorControllerParameterType.Bool:
+ case AnimatorControllerParameterType.Trigger:
+ m_manager.Animator.SetBool(m_hash, p_value > 0);
+ break;
+ case AnimatorControllerParameterType.Int:
+ m_manager.Animator.SetInteger(m_hash, p_value);
+ break;
+ case AnimatorControllerParameterType.Float:
+ m_manager.Animator.SetFloat(m_hash, p_value);
+ break;
+ }
+ }
+ }
+ }
+
+ public void SetValue(float p_value)
+ {
+ if(m_hash != 0)
+ {
+ if(m_sync)
+ m_manager.SetParameter(m_name, p_value);
+ else
+ {
+ switch(m_type)
+ {
+ case AnimatorControllerParameterType.Bool:
+ case AnimatorControllerParameterType.Trigger:
+ m_manager.Animator.SetBool(m_hash, p_value > 0f);
+ break;
+ case AnimatorControllerParameterType.Int:
+ m_manager.Animator.SetInteger(m_hash, (int)p_value);
+ break;
+ case AnimatorControllerParameterType.Float:
+ m_manager.Animator.SetFloat(m_hash, p_value);
+ break;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ml_ppu/PickUpManager.cs b/ml_ppu/PickUpManager.cs
index 68a1432..5673f90 100644
--- a/ml_ppu/PickUpManager.cs
+++ b/ml_ppu/PickUpManager.cs
@@ -33,6 +33,8 @@ namespace ml_ppu
Vector3 m_lastPosition = Vector3.zero;
Vector3 m_velocity = Vector3.zero;
+ AvatarParameter m_avatarParameter = null;
+
void Awake()
{
if(Instance != null)
@@ -122,6 +124,7 @@ namespace ml_ppu
m_held = false;
BetterBetterCharacterController.Instance.SetVelocity(m_velocity * Settings.VelocityMultiplier);
+ m_avatarParameter?.SetValue(false);
}
}
}
@@ -134,6 +137,8 @@ namespace ml_ppu
Animator l_animator = PlayerSetup.Instance.Animator;
if((l_animator != null) && l_animator.isHuman)
{
+ m_avatarParameter = new AvatarParameter("PickedUp", PlayerSetup.Instance.AnimatorManager);
+
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
@@ -171,6 +176,8 @@ namespace ml_ppu
{
try
{
+ m_avatarParameter = null;
+
m_ready = false;
m_held = false;
@@ -264,6 +271,8 @@ namespace ml_ppu
m_lastPosition = l_playerPos;
m_velocity = Vector3.zero;
m_held = true;
+
+ m_avatarParameter?.SetValue(true);
}
}
}
diff --git a/ml_ppu/Properties/AssemblyInfo.cs b/ml_ppu/Properties/AssemblyInfo.cs
index d5a3c9b..b5eb944 100644
--- a/ml_ppu/Properties/AssemblyInfo.cs
+++ b/ml_ppu/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_ppu.PlayerPickUp), "PlayerPickUp", "1.0.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_ppu.PlayerPickUp), "PlayerPickUp", "1.0.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonOptionalDependencies("PlayerRagdollMod")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
diff --git a/ml_ppu/README.md b/ml_ppu/README.md
index 95c0f50..ac03b0e 100644
--- a/ml_ppu/README.md
+++ b/ml_ppu/README.md
@@ -13,9 +13,14 @@ Available mod's settings in BTKUILib's page:
* **Friends only:** allow only friends to pick you up; `true` by default;
* **Velocity multiplier:** velocity multiplier upon drop/throw; `1.0` by default.
+
To pick you up remote player should:
* Make hands `grab` pointers to appear on your side (usually, press controller grip, trigger button or fist gesture, depends on remote player controllers type);
* Touch your avatar's torso with both pointers;
+Available additional parameters for AAS animator:
+* **`PickedUp`:** defines current picked up state; boolean.
+ * Note: Can be set as local-only (not synced) if starts with `#` character.
+
# Notes
* Compatible with PlayerRagdollMod.
diff --git a/ml_ppu/ml_ppu.csproj b/ml_ppu/ml_ppu.csproj
index 6d6ed75..3026bdf 100644
--- a/ml_ppu/ml_ppu.csproj
+++ b/ml_ppu/ml_ppu.csproj
@@ -5,7 +5,7 @@
x64
PlayerPickUp
SDraw
- 1.0.1
+ 1.0.2
diff --git a/ml_prm/Properties/AssemblyInfo.cs b/ml_prm/Properties/AssemblyInfo.cs
index a692c71..66ddd15 100644
--- a/ml_prm/Properties/AssemblyInfo.cs
+++ b/ml_prm/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.2.4", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_prm.PlayerRagdollMod), "PlayerRagdollMod", "1.2.5", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPriority(2)]
[assembly: MelonLoader.MelonAdditionalDependencies("BTKUILib")]
diff --git a/ml_prm/RagdollController.cs b/ml_prm/RagdollController.cs
index ac0f0fd..2d45dab 100644
--- a/ml_prm/RagdollController.cs
+++ b/ml_prm/RagdollController.cs
@@ -661,7 +661,7 @@ namespace ml_prm
IKSystem.Instance.applyOriginalHipRotation = true;
PlayerSetup.Instance.AnimatorManager.CancelEmote = true;
- m_ragdolledParameter.SetValue(true);
+ m_ragdolledParameter?.SetValue(true);
if(!WorldManager.IsSafeWorld())
{
@@ -706,7 +706,7 @@ namespace ml_prm
if(m_vrIK != null)
m_vrIK.solver.Reset();
- m_ragdolledParameter.SetValue(false);
+ m_ragdolledParameter?.SetValue(false);
m_puppet.localPosition = Vector3.zero;
m_puppet.localRotation = Quaternion.identity;
diff --git a/ml_prm/ml_prm.csproj b/ml_prm/ml_prm.csproj
index 4059621..b32c093 100644
--- a/ml_prm/ml_prm.csproj
+++ b/ml_prm/ml_prm.csproj
@@ -4,7 +4,7 @@
netstandard2.1
x64
PlayerRagdollMod
- 1.2.4
+ 1.2.5
SDraw
SDraw
PlayerRagdollMod
diff --git a/ml_vei/Properties/AssemblyInfo.cs b/ml_vei/Properties/AssemblyInfo.cs
index 6c140ba..c3e96d1 100644
--- a/ml_vei/Properties/AssemblyInfo.cs
+++ b/ml_vei/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_vei.ViveExtendedInput), "ViveExtendedInput", "1.1.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_vei.ViveExtendedInput), "ViveExtendedInput", "1.1.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)]
diff --git a/ml_vei/ml_vei.csproj b/ml_vei/ml_vei.csproj
index d8d19d6..f26a419 100644
--- a/ml_vei/ml_vei.csproj
+++ b/ml_vei/ml_vei.csproj
@@ -4,7 +4,7 @@
netstandard2.1
x64
ViveExtendedInput
- 1.1.2
+ 1.1.3
SDraw
SDraw
ViveExtendedInput
diff --git a/ml_vpc/Properties/AssemblyInfo.cs b/ml_vpc/Properties/AssemblyInfo.cs
index 3621b58..3c0c734 100644
--- a/ml_vpc/Properties/AssemblyInfo.cs
+++ b/ml_vpc/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-[assembly: MelonLoader.MelonInfo(typeof(ml_vpc.VideoPlayerCookies), "VideoPlayerCookies", "1.0.3", "SDraw", "https://github.com/SDraw/ml_mods_cvr")]
+[assembly: MelonLoader.MelonInfo(typeof(ml_vpc.VideoPlayerCookies), "VideoPlayerCookies", "1.0.4", "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)]
diff --git a/ml_vpc/ml_vpc.csproj b/ml_vpc/ml_vpc.csproj
index e374171..dad2a90 100644
--- a/ml_vpc/ml_vpc.csproj
+++ b/ml_vpc/ml_vpc.csproj
@@ -6,7 +6,7 @@
VideoPlayerCookies
SDraw
SDraw
- 1.0.3
+ 1.0.4