From 417eab59740081f46d3a0b3b36eab434211ec1e1 Mon Sep 17 00:00:00 2001 From: Simon Kelly Date: Sat, 30 Dec 2023 22:04:24 +0000 Subject: [PATCH] Fixes and features --- Laboratory/Buttons/CooldownButton.cs | 2 +- .../Patches/AnimationPatches.cs | 5 +++++ .../Player/Extensions/PlayerExtensions.cs | 21 ++++++++++++++++++- Laboratory/Player/SizeModifier.cs | 8 ++++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Laboratory/Buttons/CooldownButton.cs b/Laboratory/Buttons/CooldownButton.cs index 7b84fca..70dca3b 100644 --- a/Laboratory/Buttons/CooldownButton.cs +++ b/Laboratory/Buttons/CooldownButton.cs @@ -157,7 +157,7 @@ public void SetButtonSaturation(bool saturated) public virtual bool ShouldBeVisible() { if (!ShipStatus.Instance) return false; - if (!HudManager.Instance.UseButton.gameObject.active) return false; + if (!HudManager.Instance.UseButton.gameObject.active && !HudManager.Instance.PetButton.gameObject.active) return false; PlayerControl localPlayer = PlayerControl.LocalPlayer; if (!localPlayer || localPlayer.Data == null) return false; if (localPlayer.Data.IsDead) return false; diff --git a/Laboratory/Player/AnimationControllers/Patches/AnimationPatches.cs b/Laboratory/Player/AnimationControllers/Patches/AnimationPatches.cs index bc9f2c3..a736a42 100644 --- a/Laboratory/Player/AnimationControllers/Patches/AnimationPatches.cs +++ b/Laboratory/Player/AnimationControllers/Patches/AnimationPatches.cs @@ -30,6 +30,11 @@ public static bool AdjustOffsets(PlayerPhysics __instance) Vector3 position = transform.position; position.z = (position.y - anim.RendererOffset.y) / 1000f + anim.ZOffset; transform.position = position; + + foreach (var spriteAnimNodeSync in __instance.GetComponentsInChildren()) + { + spriteAnimNodeSync.LateUpdate(); + } return false; } diff --git a/Laboratory/Player/Extensions/PlayerExtensions.cs b/Laboratory/Player/Extensions/PlayerExtensions.cs index 517c84a..77e4019 100644 --- a/Laboratory/Player/Extensions/PlayerExtensions.cs +++ b/Laboratory/Player/Extensions/PlayerExtensions.cs @@ -1,3 +1,5 @@ +using System.Collections; +using BepInEx.Unity.IL2CPP.Utils; using Laboratory.Effects.Managers; using Laboratory.Extensions; using Laboratory.Player.Managers; @@ -19,4 +21,21 @@ public static PlayerEffectManager GetEffectManager(this GameObject player) return player.GetCachedComponent(); } - public static PlayerEffectManager GetEffectManager(this Component player) => player.gameObject.GetEffectManager(); } + public static PlayerEffectManager GetEffectManager(this Component player) => player.gameObject.GetEffectManager(); + + public static Coroutine AnimateCustom(this PlayerControl player, AnimationClip clip) + { + return player.StartCoroutine(player.CoAnimateCustom(clip)); + } + + private static IEnumerator CoAnimateCustom(this PlayerControl player, AnimationClip clip) + { + player.MyPhysics.DoingCustomAnimation = true; + + yield return player.MyPhysics.Animations.CoPlayCustomAnimation(clip); + player.cosmetics.AnimateSkinIdle(); + player.MyPhysics.Animations.PlayIdleAnimation(); + player.cosmetics.SetBodyCosmeticsVisible(b: true); + player.MyPhysics.DoingCustomAnimation = false; + } +} diff --git a/Laboratory/Player/SizeModifier.cs b/Laboratory/Player/SizeModifier.cs index baf3b43..ab4eb0b 100644 --- a/Laboratory/Player/SizeModifier.cs +++ b/Laboratory/Player/SizeModifier.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using HarmonyLib; @@ -20,7 +21,7 @@ public static class SizeModifer public static void SetSizeModifier(this PlayerPhysics player, float value, object key) { Dictionary set = sizeModifiers[player]; - if (value == 1) + if (Math.Abs(value - 1) < 0.001) { set.Remove(key); } @@ -39,13 +40,14 @@ public static void SetSizeModifier(this PlayerPhysics player, float value) public static void Update(PlayerPhysics player) { - Vector3 size = DefaultSize; + var size = DefaultSize; - foreach ((object _, float v) in sizeModifiers[player]) + foreach (var (_, v) in sizeModifiers[player]) { size *= v; } + player.myPlayer.Collider.Cast().radius = 0.2233912f / (size.x / DefaultSize.x); player.transform.localScale = size; }