From b66a351859894dfd168322584779e8de89ccf2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albin=20Cor=C3=A9n?= <2108U9@gmail.com> Date: Mon, 2 Apr 2018 21:49:02 +0200 Subject: [PATCH] Moved prefabs to NetworkConfig --- MLAPI/Data/NetworkConfig.cs | 15 ++++++++++++- MLAPI/Data/NetworkPool.cs | 2 +- .../MonoBehaviours/Core/NetworkingManager.cs | 22 ++++++------------- .../Core/SpawnManager.cs | 8 +++++-- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/MLAPI/Data/NetworkConfig.cs b/MLAPI/Data/NetworkConfig.cs index 573120b..a8f3fc2 100644 --- a/MLAPI/Data/NetworkConfig.cs +++ b/MLAPI/Data/NetworkConfig.cs @@ -1,4 +1,5 @@ -using System; +using MLAPI.MonoBehaviours.Core; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -42,6 +43,14 @@ namespace MLAPI.Data /// public List RegisteredScenes = new List(); /// + /// A list of spawnable prefabs + /// + public List SpawnablePrefabs = new List(); + /// + /// The default player prefab + /// + public GameObject PlayerPrefab; + /// /// The size of the receive message buffer. This is the max message size. /// public int MessageBufferSize = 65535; @@ -166,6 +175,10 @@ namespace MLAPI.Data writer.Write(EncryptedChannels[i]); } } + if(HandleObjectSpawning) + { + writer.Write(SpawnablePrefabs.Count); + } writer.Write(HandleObjectSpawning); writer.Write(EnableEncryption); writer.Write(AllowPassthroughMessages); diff --git a/MLAPI/Data/NetworkPool.cs b/MLAPI/Data/NetworkPool.cs index 46fd046..dfebaf3 100644 --- a/MLAPI/Data/NetworkPool.cs +++ b/MLAPI/Data/NetworkPool.cs @@ -14,7 +14,7 @@ namespace MLAPI.Data poolId = poolIndex; for (int i = 0; i < size; i++) { - GameObject go = Object.Instantiate(NetworkingManager.singleton.SpawnablePrefabs[prefabIndex], Vector3.zero, Quaternion.identity); + GameObject go = Object.Instantiate(NetworkingManager.singleton.NetworkConfig.SpawnablePrefabs[prefabIndex], Vector3.zero, Quaternion.identity); go.GetComponent()._isPooledObject = true; go.GetComponent().poolId = poolId; go.GetComponent().Spawn(); diff --git a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs index c1c03d3..af76e90 100644 --- a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs +++ b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs @@ -38,14 +38,6 @@ namespace MLAPI.MonoBehaviours.Core /// public bool RunInBackground = true; /// - /// A list of spawnable prefabs - /// - public List SpawnablePrefabs; - /// - /// The default prefab to give to players - /// - public GameObject DefaultPlayerPrefab; - /// /// The singleton instance of the NetworkingManager /// public static NetworkingManager singleton @@ -158,24 +150,24 @@ namespace MLAPI.MonoBehaviours.Core private void OnValidate() { - if (SpawnablePrefabs != null) + if (NetworkConfig.SpawnablePrefabs != null) { - for (int i = 0; i < SpawnablePrefabs.Count; i++) + for (int i = 0; i < NetworkConfig.SpawnablePrefabs.Count; i++) { - if (SpawnablePrefabs[i] == null) + if (NetworkConfig.SpawnablePrefabs[i] == null) continue; - NetworkedObject netObject = SpawnablePrefabs[i].GetComponentInChildren(); + NetworkedObject netObject = NetworkConfig.SpawnablePrefabs[i].GetComponentInChildren(); if (netObject == null) { - Debug.LogWarning("MLAPI: All SpawnablePrefabs need a NetworkedObject component. Please add one to the prefab " + SpawnablePrefabs[i].gameObject.name); + Debug.LogWarning("MLAPI: All SpawnablePrefabs need a NetworkedObject component. Please add one to the prefab " + NetworkConfig.SpawnablePrefabs[i].gameObject.name); continue; } netObject.spawnablePrefabIndex = i; } } - if (DefaultPlayerPrefab != null) + if (NetworkConfig.PlayerPrefab != null) { - NetworkedObject netObject = DefaultPlayerPrefab.GetComponentInChildren(); + NetworkedObject netObject = NetworkConfig.PlayerPrefab.GetComponentInChildren(); if (netObject == null) { Debug.LogWarning("MLAPI: The player object needs a NetworkedObject component."); diff --git a/MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs b/MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs index 1295375..4c32cfb 100644 --- a/MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs +++ b/MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs @@ -89,7 +89,9 @@ namespace MLAPI.NetworkingManagerComponents.Core internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId, int ownerId, Vector3 position, Quaternion rotation) { - GameObject go = MonoBehaviour.Instantiate(netManager.SpawnablePrefabs[spawnablePrefabIndex]); + if (spawnablePrefabIndex >= netManager.NetworkConfig.SpawnablePrefabs.Count) + return null; + GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.SpawnablePrefabs[spawnablePrefabIndex]); NetworkedObject netObject = go.GetComponent(); if (netObject == null) { @@ -117,7 +119,9 @@ namespace MLAPI.NetworkingManagerComponents.Core internal static GameObject SpawnPlayerObject(int clientId, uint networkId) { - GameObject go = MonoBehaviour.Instantiate(netManager.DefaultPlayerPrefab); + if (netManager.NetworkConfig.PlayerPrefab == null) + return null; + GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.PlayerPrefab); NetworkedObject netObject = go.GetComponent(); if (netObject == null) {