From 52238374c5ea871279b47fa5193ee7add514b541 Mon Sep 17 00:00:00 2001 From: AmazingAlek Date: Fri, 7 Aug 2020 21:57:29 +0200 Subject: [PATCH] animation system uses player registry (#123) --- QSB/Animation/AnimationSync.cs | 11 +++++------ QSB/PlayerRegistry.cs | 13 ++++++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index b2ded265..1e5d3e00 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using OWML.ModHelper.Events; using QSB.Messaging; using UnityEngine; @@ -29,8 +28,6 @@ namespace QSB.Animation private float _sendTimer; private float _lastSentJumpChargeFraction; - private static readonly Dictionary PlayerAnimSyncs = new Dictionary(); - private void Awake() { _anim = gameObject.AddComponent(); @@ -53,7 +50,7 @@ namespace QSB.Animation mirror.Init(_anim, _bodyAnim); } - PlayerAnimSyncs[netId.Value] = this; + PlayerRegistry.AnimationSyncs.Add(this); for (var i = 0; i < _anim.parameterCount; i++) { @@ -145,10 +142,12 @@ namespace QSB.Animation private void OnClientReceiveMessage(AnimTriggerMessage message) { - if (PlayerAnimSyncs.TryGetValue(message.SenderId, out var animSync) && animSync != this) + var animationSync = PlayerRegistry.GetAnimationSync(message.SenderId); + if (animationSync == null || animationSync == this) { - animSync.HandleTrigger((AnimTrigger)message.TriggerId, message.Value); + return; } + animationSync.HandleTrigger((AnimTrigger)message.TriggerId, message.Value); } private void HandleTrigger(AnimTrigger trigger, float value) diff --git a/QSB/PlayerRegistry.cs b/QSB/PlayerRegistry.cs index 5fc2b4c1..6f89c2e3 100644 --- a/QSB/PlayerRegistry.cs +++ b/QSB/PlayerRegistry.cs @@ -2,18 +2,20 @@ using System.Linq; using QSB.Events; using QSB.TransformSync; +using QSB.Animation; namespace QSB { public static class PlayerRegistry { public static PlayerInfo LocalPlayer => GetPlayer(PlayerTransformSync.LocalInstance.netId.Value); - public static List PlayerList { get; } = new List(); - public static List TransformSyncs { get; } = new List(); + public static List TransformSyncs { get; } = new List(); public static List LocalTransformSyncs => TransformSyncs.Where(t => t.hasAuthority).ToList(); - + + public static List AnimationSyncs { get; } = new List(); + public static PlayerInfo CreatePlayer(uint id) { if (PlayerExists(id)) @@ -51,5 +53,10 @@ namespace QSB return TransformSyncs.Single(x => x.netId.Value == id); } + public static AnimationSync GetAnimationSync(uint id) + { + return AnimationSyncs.SingleOrDefault(x => x.netId.Value == id); + } + } }