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