From d9e6b5c8c96e3adbfc7519e4d6f7717dbb205549 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 20:43:16 +0000 Subject: [PATCH] more stuff and fixes --- QSB/QSBClientScene.cs | 2 +- QSB/QSBLocalClient.cs | 1 - QSB/QSBNetworkManager.cs | 10 ++++ QSB/QSBNetworkManagerUNET.cs | 9 ++-- QSB/QSBNetworkScene.cs | 100 +++++++++-------------------------- 5 files changed, 39 insertions(+), 83 deletions(-) diff --git a/QSB/QSBClientScene.cs b/QSB/QSBClientScene.cs index d41eddd8..33d875e3 100644 --- a/QSB/QSBClientScene.cs +++ b/QSB/QSBClientScene.cs @@ -581,7 +581,7 @@ namespace QSB { Debug.LogError(string.Concat(new object[] { - "Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=", + "Failed to spawn server object, did you forget to add it to the QSBNetworkManager? assetId=", s_ObjectSpawnMessage.assetId, " netId=", s_ObjectSpawnMessage.netId diff --git a/QSB/QSBLocalClient.cs b/QSB/QSBLocalClient.cs index 9ec7dfa1..c8fa4b9c 100644 --- a/QSB/QSBLocalClient.cs +++ b/QSB/QSBLocalClient.cs @@ -108,7 +108,6 @@ namespace QSB } else { - DebugLog.DebugWrite("try replace"); s_InternalMessage.reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.reader, new object[] { t.buffer }); } s_InternalMessage.reader.ReadInt16(); diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 1eefcadb..b3b74cfd 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -50,6 +50,8 @@ namespace QSB playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); var ident = playerPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); @@ -59,6 +61,8 @@ namespace QSB _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); ident = _shipPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); @@ -66,6 +70,8 @@ namespace QSB _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); ident = _cameraPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); @@ -73,6 +79,8 @@ namespace QSB _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); ident = _probePrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId",_probePrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); @@ -80,6 +88,8 @@ namespace QSB OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); ident = OrbPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); diff --git a/QSB/QSBNetworkManagerUNET.cs b/QSB/QSBNetworkManagerUNET.cs index 7c18deb9..1fe64b36 100644 --- a/QSB/QSBNetworkManagerUNET.cs +++ b/QSB/QSBNetworkManagerUNET.cs @@ -623,14 +623,14 @@ namespace QSB client.RegisterHandler(39, new QSBNetworkMessageDelegate(OnClientSceneInternal)); if (m_PlayerPrefab != null) { - ClientScene.RegisterPrefab(m_PlayerPrefab); + QSBClientScene.RegisterPrefab(m_PlayerPrefab); } for (int i = 0; i < m_SpawnPrefabs.Count; i++) { GameObject gameObject = m_SpawnPrefabs[i]; if (gameObject != null) { - ClientScene.RegisterPrefab(gameObject); + QSBClientScene.RegisterPrefab(gameObject); } } } @@ -988,10 +988,7 @@ namespace QSB { if (s_LoadingSceneAsync.isDone) { - if (LogFilter.logDebug) - { - Debug.Log("ClientChangeScene done readyCon:" + s_ClientReadyConnection); - } + DebugLog.DebugWrite("ClientChangeScene done readyCon:" + s_ClientReadyConnection); singleton.FinishLoadScene(); s_LoadingSceneAsync.allowSceneActivation = true; s_LoadingSceneAsync = null; diff --git a/QSB/QSBNetworkScene.cs b/QSB/QSBNetworkScene.cs index 225b8fe3..0e6cd06c 100644 --- a/QSB/QSBNetworkScene.cs +++ b/QSB/QSBNetworkScene.cs @@ -10,7 +10,7 @@ namespace QSB { class QSBNetworkScene { - internal Dictionary localObjects { get; } = new Dictionary(); + private Dictionary m_LocalObjects = new Dictionary(); internal static Dictionary guidToPrefab { get; } = new Dictionary(); @@ -18,6 +18,14 @@ namespace QSB internal static Dictionary unspawnHandlers { get; } = new Dictionary(); + internal Dictionary localObjects + { + get + { + return this.m_LocalObjects; + } + } + internal void Shutdown() { this.ClearLocalObjects(); @@ -26,13 +34,6 @@ namespace QSB internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { - Debug.Log(string.Concat(new object[] - { - "SetLocalObject ", - netId, - " ", - obj - })); if (obj == null) { this.localObjects[netId] = null; @@ -46,6 +47,7 @@ namespace QSB } if (networkIdentity == null) { + DebugLog.DebugWrite($"Adding {netId} to local objects."); networkIdentity = obj.GetComponent(); this.localObjects[netId] = networkIdentity; } @@ -69,9 +71,9 @@ namespace QSB internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity uv) { bool result; - if (this.localObjects.ContainsKey(netId) && this.localObjects[netId] != null) + if (localObjects.ContainsKey(netId) && localObjects[netId] != null) { - uv = this.localObjects[netId]; + uv = localObjects[netId]; result = true; } else @@ -84,7 +86,7 @@ namespace QSB internal bool RemoveLocalObject(NetworkInstanceId netId) { - return this.localObjects.Remove(netId); + return localObjects.Remove(netId); } internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) @@ -114,13 +116,6 @@ namespace QSB if (component) { component.SetDynamicAssetId(newAssetId); - DebugLog.DebugWrite(string.Concat(new object[] - { - "Registering prefab '", - prefab.name, - "' as asset:", - component.AssetId - })); guidToPrefab[component.AssetId] = prefab; } else if (LogFilter.logError) @@ -131,20 +126,10 @@ namespace QSB internal static void RegisterPrefab(GameObject prefab) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component) { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "Registering prefab '", - prefab.name, - "' as asset:", - component.assetId - })); - } - guidToPrefab[component.assetId] = prefab; + guidToPrefab[component.AssetId] = prefab; NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren(); if (componentsInChildren.Length > 1) { @@ -205,18 +190,6 @@ namespace QSB } else { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "RegisterSpawnHandler asset '", - assetId, - "' ", - spawnHandler.GetMethodName(), - "/", - unspawnHandler.GetMethodName() - })); - } spawnHandlers[assetId] = spawnHandler; unspawnHandlers[assetId] = unspawnHandler; } @@ -224,7 +197,7 @@ namespace QSB internal static void UnregisterPrefab(GameObject prefab) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component == null) { if (LogFilter.logError) @@ -234,53 +207,30 @@ namespace QSB } else { - spawnHandlers.Remove(component.assetId); - unspawnHandlers.Remove(component.assetId); + spawnHandlers.Remove(component.AssetId); + unspawnHandlers.Remove(component.AssetId); } } internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); - } + Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } else if (spawnHandler == null || unspawnHandler == null) { - if (LogFilter.logError) - { - Debug.LogError("RegisterPrefab custom spawn function null for " + component.assetId); - } + Debug.LogError("RegisterPrefab custom spawn function null for " + component.AssetId); } - else if (!component.assetId.IsValid()) + else if (!component.AssetId.IsValid()) { - if (LogFilter.logError) - { - Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); - } + Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); } else { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "Registering custom prefab '", - prefab.name, - "' as asset:", - component.assetId, - " ", - spawnHandler.GetMethodName(), - "/", - unspawnHandler.GetMethodName() - })); - } - spawnHandlers[component.assetId] = spawnHandler; - unspawnHandlers[component.assetId] = unspawnHandler; + spawnHandlers[component.AssetId] = spawnHandler; + unspawnHandlers[component.AssetId] = unspawnHandler; } }