diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index b18723c9..5d8eea6e 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -31,8 +31,9 @@ namespace QSB.Animation public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType; - private void Awake() + protected override void Awake() { + base.Awake(); _anim = gameObject.AddComponent(); _netAnim = gameObject.AddComponent(); _netAnim.enabled = false; @@ -41,8 +42,9 @@ namespace QSB.Animation QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); } - private void OnDestroy() + protected override void OnDestroy() { + base.OnDestroy(); if (_playerController == null) { return; @@ -79,8 +81,6 @@ namespace QSB.Animation Mirror.Init(_anim, _bodyAnim); } - QSBPlayerManager.PlayerSyncObjects.Add(this); - for (var i = 0; i < _anim.parameterCount; i++) { _netAnim.SetParameterAutoSend(i, true); diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e430911b..d85354da 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -27,20 +27,17 @@ namespace QSB.Instruments QSBInputManager.ExitTaunt += () => ReturnToPlayer(); QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - - QSBPlayerManager.PlayerSyncObjects.Add(this); } public void InitRemote(Transform root) { rootObj = root; QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - - QSBPlayerManager.PlayerSyncObjects.Add(this); } - private void OnDestroy() + protected override void OnDestroy() { + base.Awake(); if (!IsLocalPlayer) { return; diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index df7d6fb9..a7876274 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -7,5 +7,9 @@ namespace QSB.Player public uint AttachedNetId => NetIdentity?.NetId.Value ?? uint.MaxValue; public uint PlayerId => NetIdentity.RootIdentity?.NetId.Value ?? NetIdentity.NetId.Value; public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); + + protected virtual void Awake() => QSBPlayerManager.PlayerSyncObjects.Add(this); + + protected virtual void OnDestroy() => QSBPlayerManager.PlayerSyncObjects.Remove(this); } } \ No newline at end of file diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 3044c12d..93b8489f 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -22,15 +22,17 @@ namespace QSB.TransformSync private Quaternion _rotationSmoothVelocity; private bool _isVisible; - protected virtual void Awake() + protected override void Awake() { + base.Awake(); QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } - protected virtual void OnDestroy() + protected override void OnDestroy() { + base.OnDestroy(); DebugLog.DebugWrite($"destroy of {PlayerId}.{GetType().Name}"); QSBPlayerManager.PlayerSyncObjects.Remove(this); if (!HasAuthority && SyncedTransform != null)