Moved prefabs to NetworkConfig

This commit is contained in:
Albin Corén 2018-04-02 21:49:02 +02:00
parent b1c4cae028
commit b66a351859
4 changed files with 28 additions and 19 deletions

View File

@ -1,4 +1,5 @@
using System; using MLAPI.MonoBehaviours.Core;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -42,6 +43,14 @@ namespace MLAPI.Data
/// </summary> /// </summary>
public List<string> RegisteredScenes = new List<string>(); public List<string> RegisteredScenes = new List<string>();
/// <summary> /// <summary>
/// A list of spawnable prefabs
/// </summary>
public List<GameObject> SpawnablePrefabs = new List<GameObject>();
/// <summary>
/// The default player prefab
/// </summary>
public GameObject PlayerPrefab;
/// <summary>
/// The size of the receive message buffer. This is the max message size. /// The size of the receive message buffer. This is the max message size.
/// </summary> /// </summary>
public int MessageBufferSize = 65535; public int MessageBufferSize = 65535;
@ -166,6 +175,10 @@ namespace MLAPI.Data
writer.Write(EncryptedChannels[i]); writer.Write(EncryptedChannels[i]);
} }
} }
if(HandleObjectSpawning)
{
writer.Write(SpawnablePrefabs.Count);
}
writer.Write(HandleObjectSpawning); writer.Write(HandleObjectSpawning);
writer.Write(EnableEncryption); writer.Write(EnableEncryption);
writer.Write(AllowPassthroughMessages); writer.Write(AllowPassthroughMessages);

View File

@ -14,7 +14,7 @@ namespace MLAPI.Data
poolId = poolIndex; poolId = poolIndex;
for (int i = 0; i < size; i++) 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<NetworkedObject>()._isPooledObject = true; go.GetComponent<NetworkedObject>()._isPooledObject = true;
go.GetComponent<NetworkedObject>().poolId = poolId; go.GetComponent<NetworkedObject>().poolId = poolId;
go.GetComponent<NetworkedObject>().Spawn(); go.GetComponent<NetworkedObject>().Spawn();

View File

@ -38,14 +38,6 @@ namespace MLAPI.MonoBehaviours.Core
/// </summary> /// </summary>
public bool RunInBackground = true; public bool RunInBackground = true;
/// <summary> /// <summary>
/// A list of spawnable prefabs
/// </summary>
public List<GameObject> SpawnablePrefabs;
/// <summary>
/// The default prefab to give to players
/// </summary>
public GameObject DefaultPlayerPrefab;
/// <summary>
/// The singleton instance of the NetworkingManager /// The singleton instance of the NetworkingManager
/// </summary> /// </summary>
public static NetworkingManager singleton public static NetworkingManager singleton
@ -158,24 +150,24 @@ namespace MLAPI.MonoBehaviours.Core
private void OnValidate() 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; continue;
NetworkedObject netObject = SpawnablePrefabs[i].GetComponentInChildren<NetworkedObject>(); NetworkedObject netObject = NetworkConfig.SpawnablePrefabs[i].GetComponentInChildren<NetworkedObject>();
if (netObject == null) 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; continue;
} }
netObject.spawnablePrefabIndex = i; netObject.spawnablePrefabIndex = i;
} }
} }
if (DefaultPlayerPrefab != null) if (NetworkConfig.PlayerPrefab != null)
{ {
NetworkedObject netObject = DefaultPlayerPrefab.GetComponentInChildren<NetworkedObject>(); NetworkedObject netObject = NetworkConfig.PlayerPrefab.GetComponentInChildren<NetworkedObject>();
if (netObject == null) if (netObject == null)
{ {
Debug.LogWarning("MLAPI: The player object needs a NetworkedObject component."); Debug.LogWarning("MLAPI: The player object needs a NetworkedObject component.");

View File

@ -89,7 +89,9 @@ namespace MLAPI.NetworkingManagerComponents.Core
internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId, int ownerId, Vector3 position, Quaternion rotation) 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<NetworkedObject>(); NetworkedObject netObject = go.GetComponent<NetworkedObject>();
if (netObject == null) if (netObject == null)
{ {
@ -117,7 +119,9 @@ namespace MLAPI.NetworkingManagerComponents.Core
internal static GameObject SpawnPlayerObject(int clientId, uint networkId) 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<NetworkedObject>(); NetworkedObject netObject = go.GetComponent<NetworkedObject>();
if (netObject == null) if (netObject == null)
{ {