From 37c3d254947bdfafa566fb21c293518251f58e5d Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sat, 15 Jan 2022 18:17:18 -0800 Subject: [PATCH] rebuild network animator params and mirror floats on controller change --- Mirror/Components/NetworkAnimator.cs | 2 +- QSB/Animation/Player/AnimationSync.cs | 22 +++++----------------- QSB/Animation/Player/AnimatorMirror.cs | 13 ++----------- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/Mirror/Components/NetworkAnimator.cs b/Mirror/Components/NetworkAnimator.cs index cc925a92..29756123 100644 --- a/Mirror/Components/NetworkAnimator.cs +++ b/Mirror/Components/NetworkAnimator.cs @@ -71,7 +71,7 @@ namespace Mirror } } - void Awake() + public void Awake() { // store the animator parameters in a variable - the "Animator.parameters" getter allocates // a new parameter array every time it is accessed so we should avoid doing it in a loop diff --git a/QSB/Animation/Player/AnimationSync.cs b/QSB/Animation/Player/AnimationSync.cs index f99a432c..5919c143 100644 --- a/QSB/Animation/Player/AnimationSync.cs +++ b/QSB/Animation/Player/AnimationSync.cs @@ -10,7 +10,6 @@ using UnityEngine; namespace QSB.Animation.Player { - public class AnimationSync : PlayerSyncObject { private RuntimeAnimatorController _suitedAnimController; @@ -43,8 +42,6 @@ namespace QSB.Animation.Player protected void OnDestroy() { - Destroy(InvisibleAnimator); - Destroy(NetworkAnimator); QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded; } @@ -64,7 +61,6 @@ namespace QSB.Animation.Player LoadControllers(); } - NetworkAnimator.enabled = true; VisibleAnimator = body.GetComponent(); Mirror = body.gameObject.AddComponent(); if (isLocalPlayer) @@ -76,10 +72,8 @@ namespace QSB.Animation.Player Mirror.Init(InvisibleAnimator, VisibleAnimator); } - // for (var i = 0; i < InvisibleAnimator.parameterCount; i++) - // { - // NetworkAnimator.SetParameterAutoSend(i, true); - // } + NetworkAnimator.enabled = true; + NetworkAnimator.Awake(); var playerAnimController = body.GetComponent(); _suitedAnimController = playerAnimController._baseAnimController; @@ -300,15 +294,9 @@ namespace QSB.Animation.Player { DebugLog.ToConsole($"Error - Mirror is null. ({PlayerId})", MessageType.Error); } - else if (InvisibleAnimator != null) - { - NetworkAnimator.animator = InvisibleAnimator; // Probably not needed. - Mirror.RebuildFloatParams(); - // for (var i = 0; i < InvisibleAnimator.parameterCount; i++) - // { - // NetworkAnimator.SetParameterAutoSend(i, true); - // } - } + + Mirror.RebuildFloatParams(); + NetworkAnimator.Awake(); } } } \ No newline at end of file diff --git a/QSB/Animation/Player/AnimatorMirror.cs b/QSB/Animation/Player/AnimatorMirror.cs index b324413b..77362ec3 100644 --- a/QSB/Animation/Player/AnimatorMirror.cs +++ b/QSB/Animation/Player/AnimatorMirror.cs @@ -44,10 +44,7 @@ namespace QSB.Animation.Player _to.runtimeAnimatorController = _from.runtimeAnimatorController; } - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } + RebuildFloatParams(); } public void Update() @@ -60,6 +57,7 @@ namespace QSB.Animation.Player if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) { _to.runtimeAnimatorController = _from.runtimeAnimatorController; + RebuildFloatParams(); } SyncParams(); @@ -73,13 +71,6 @@ namespace QSB.Animation.Player switch (fromParam.type) { case AnimatorControllerParameterType.Float: - if (!_floatParams.ContainsKey(fromParam.name)) - { - DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); - RebuildFloatParams(); - break; - } - _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); break;