From c57599289ae09f0062ca04fb41db706131f03654 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 15 Jun 2021 18:56:51 +0100 Subject: [PATCH] turn ship manager into world object manager --- QSB/ShipSync/ShipManager.cs | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/QSB/ShipSync/ShipManager.cs b/QSB/ShipSync/ShipManager.cs index f31dda5f..50417580 100644 --- a/QSB/ShipSync/ShipManager.cs +++ b/QSB/ShipSync/ShipManager.cs @@ -1,20 +1,25 @@ using OWML.Common; +using QSB.Player; +using QSB.Player.TransformSync; +using QSB.ShipSync.TransformSync; using QSB.Utility; +using QSB.WorldSync; using QuantumUNET; using System.Linq; using UnityEngine; namespace QSB.ShipSync { - internal class ShipManager : MonoBehaviour + internal class ShipManager : WorldObjectManager { public static ShipManager Instance; public InteractZone HatchInteractZone; public HatchController HatchController; public ShipTractorBeamSwitch ShipTractorBeam; - - private uint _currentFlyer = uint.MaxValue; + public ShipCockpitController CockpitController; + public bool HasAuthority + => ShipTransformSync.LocalInstance.HasAuthority; public uint CurrentFlyer { get => _currentFlyer; @@ -28,23 +33,18 @@ namespace QSB.ShipSync } } - private void Awake() - { - QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; - Instance = this; - } + private uint _currentFlyer = uint.MaxValue; - private void OnSceneLoaded(OWScene scene) - { - if (scene == OWScene.EyeOfTheUniverse) - { - return; - } + public void Start() + => Instance = this; + protected override void RebuildWorldObjects(OWScene scene) + { var shipTransform = GameObject.Find("Ship_Body"); HatchController = shipTransform.GetComponentInChildren(); HatchInteractZone = HatchController.GetComponent(); ShipTractorBeam = Resources.FindObjectsOfTypeAll().First(); + CockpitController = Resources.FindObjectsOfTypeAll().First(); var sphereShape = HatchController.GetComponent(); sphereShape.radius = 2.5f; @@ -52,7 +52,10 @@ namespace QSB.ShipSync if (QSBCore.IsServer) { - DebugLog.DebugWrite($"SPAWN SHIP"); + if (ShipTransformSync.LocalInstance != null) + { + QNetworkServer.Destroy(ShipTransformSync.LocalInstance.gameObject); + } QNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.ShipPrefab)); } }