Skip to content

Commit b66a351

Browse files
committed
Moved prefabs to NetworkConfig
1 parent b1c4cae commit b66a351

File tree

4 files changed

+28
-19
lines changed

4 files changed

+28
-19
lines changed

MLAPI/Data/NetworkConfig.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System;
1+
using MLAPI.MonoBehaviours.Core;
2+
using System;
23
using System.Collections.Generic;
34
using System.IO;
45
using System.Linq;
@@ -42,6 +43,14 @@ public class NetworkConfig
4243
/// </summary>
4344
public List<string> RegisteredScenes = new List<string>();
4445
/// <summary>
46+
/// A list of spawnable prefabs
47+
/// </summary>
48+
public List<GameObject> SpawnablePrefabs = new List<GameObject>();
49+
/// <summary>
50+
/// The default player prefab
51+
/// </summary>
52+
public GameObject PlayerPrefab;
53+
/// <summary>
4554
/// The size of the receive message buffer. This is the max message size.
4655
/// </summary>
4756
public int MessageBufferSize = 65535;
@@ -166,6 +175,10 @@ public byte[] GetConfig(bool cache = true)
166175
writer.Write(EncryptedChannels[i]);
167176
}
168177
}
178+
if(HandleObjectSpawning)
179+
{
180+
writer.Write(SpawnablePrefabs.Count);
181+
}
169182
writer.Write(HandleObjectSpawning);
170183
writer.Write(EnableEncryption);
171184
writer.Write(AllowPassthroughMessages);

MLAPI/Data/NetworkPool.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal NetworkPool(int prefabIndex, uint size, ushort poolIndex)
1414
poolId = poolIndex;
1515
for (int i = 0; i < size; i++)
1616
{
17-
GameObject go = Object.Instantiate(NetworkingManager.singleton.SpawnablePrefabs[prefabIndex], Vector3.zero, Quaternion.identity);
17+
GameObject go = Object.Instantiate(NetworkingManager.singleton.NetworkConfig.SpawnablePrefabs[prefabIndex], Vector3.zero, Quaternion.identity);
1818
go.GetComponent<NetworkedObject>()._isPooledObject = true;
1919
go.GetComponent<NetworkedObject>().poolId = poolId;
2020
go.GetComponent<NetworkedObject>().Spawn();

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ public float NetworkTime
3838
/// </summary>
3939
public bool RunInBackground = true;
4040
/// <summary>
41-
/// A list of spawnable prefabs
42-
/// </summary>
43-
public List<GameObject> SpawnablePrefabs;
44-
/// <summary>
45-
/// The default prefab to give to players
46-
/// </summary>
47-
public GameObject DefaultPlayerPrefab;
48-
/// <summary>
4941
/// The singleton instance of the NetworkingManager
5042
/// </summary>
5143
public static NetworkingManager singleton
@@ -158,24 +150,24 @@ public bool IsClientConnected
158150

159151
private void OnValidate()
160152
{
161-
if (SpawnablePrefabs != null)
153+
if (NetworkConfig.SpawnablePrefabs != null)
162154
{
163-
for (int i = 0; i < SpawnablePrefabs.Count; i++)
155+
for (int i = 0; i < NetworkConfig.SpawnablePrefabs.Count; i++)
164156
{
165-
if (SpawnablePrefabs[i] == null)
157+
if (NetworkConfig.SpawnablePrefabs[i] == null)
166158
continue;
167-
NetworkedObject netObject = SpawnablePrefabs[i].GetComponentInChildren<NetworkedObject>();
159+
NetworkedObject netObject = NetworkConfig.SpawnablePrefabs[i].GetComponentInChildren<NetworkedObject>();
168160
if (netObject == null)
169161
{
170-
Debug.LogWarning("MLAPI: All SpawnablePrefabs need a NetworkedObject component. Please add one to the prefab " + SpawnablePrefabs[i].gameObject.name);
162+
Debug.LogWarning("MLAPI: All SpawnablePrefabs need a NetworkedObject component. Please add one to the prefab " + NetworkConfig.SpawnablePrefabs[i].gameObject.name);
171163
continue;
172164
}
173165
netObject.spawnablePrefabIndex = i;
174166
}
175167
}
176-
if (DefaultPlayerPrefab != null)
168+
if (NetworkConfig.PlayerPrefab != null)
177169
{
178-
NetworkedObject netObject = DefaultPlayerPrefab.GetComponentInChildren<NetworkedObject>();
170+
NetworkedObject netObject = NetworkConfig.PlayerPrefab.GetComponentInChildren<NetworkedObject>();
179171
if (netObject == null)
180172
{
181173
Debug.LogWarning("MLAPI: The player object needs a NetworkedObject component.");

MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ internal static void DestroyNonSceneObjects()
8989

9090
internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId, int ownerId, Vector3 position, Quaternion rotation)
9191
{
92-
GameObject go = MonoBehaviour.Instantiate(netManager.SpawnablePrefabs[spawnablePrefabIndex]);
92+
if (spawnablePrefabIndex >= netManager.NetworkConfig.SpawnablePrefabs.Count)
93+
return null;
94+
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.SpawnablePrefabs[spawnablePrefabIndex]);
9395
NetworkedObject netObject = go.GetComponent<NetworkedObject>();
9496
if (netObject == null)
9597
{
@@ -117,7 +119,9 @@ internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId,
117119

118120
internal static GameObject SpawnPlayerObject(int clientId, uint networkId)
119121
{
120-
GameObject go = MonoBehaviour.Instantiate(netManager.DefaultPlayerPrefab);
122+
if (netManager.NetworkConfig.PlayerPrefab == null)
123+
return null;
124+
GameObject go = MonoBehaviour.Instantiate(netManager.NetworkConfig.PlayerPrefab);
121125
NetworkedObject netObject = go.GetComponent<NetworkedObject>();
122126
if (netObject == null)
123127
{

0 commit comments

Comments
 (0)