rebuild network animator params and mirror floats on controller change

This commit is contained in:
JohnCorby 2022-01-15 18:17:18 -08:00
parent 4f9ee55f3d
commit 37c3d25494
3 changed files with 8 additions and 29 deletions

View File

@ -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

View File

@ -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<Animator>();
Mirror = body.gameObject.AddComponent<AnimatorMirror>();
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<PlayerAnimController>();
_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();
}
}
}

View File

@ -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;