Skip to content

Commit 6f69a48

Browse files
committed
Exposed SpawnManager API & Added convenience collections and methods
1 parent dcf8dbc commit 6f69a48

File tree

6 files changed

+91
-56
lines changed

6 files changed

+91
-56
lines changed

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1959,7 +1959,7 @@ protected void SendToClientsTarget<T>(string messageType, string channelName, T
19591959
/// <returns></returns>
19601960
protected NetworkedObject GetNetworkedObject(uint networkId)
19611961
{
1962-
return SpawnManager.spawnedObjects[networkId];
1962+
return SpawnManager.SpawnedObjects[networkId];
19631963
}
19641964
}
19651965
}

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ private object Init(bool server)
211211
MessageManager.releasedMessageHandlerCounters.Clear();
212212
MessageManager.reverseChannels.Clear();
213213
MessageManager.reverseMessageTypes.Clear();
214-
SpawnManager.spawnedObjects.Clear();
214+
SpawnManager.SpawnedObjects.Clear();
215+
SpawnManager.SpawnedObjectsList.Clear();
215216
SpawnManager.releasedNetworkObjectIds.Clear();
216217
NetworkPoolManager.Pools.Clear();
217218
NetworkPoolManager.PoolNamesToIndexes.Clear();
@@ -899,27 +900,27 @@ private void HandleIncomingData(uint clientId, byte[] data, int channelId, uint
899900
//Custom message, invoke all message handlers
900901
if (targeted)
901902
{
902-
if (!SpawnManager.spawnedObjects.ContainsKey(targetNetworkId))
903+
if (!SpawnManager.SpawnedObjects.ContainsKey(targetNetworkId))
903904
{
904905
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("No target for message found");
905906
messageReader.Dispose();
906907
return;
907908
}
908-
else if (!SpawnManager.spawnedObjects[targetNetworkId].targetMessageActions.ContainsKey(networkOrderId))
909+
else if (!SpawnManager.SpawnedObjects[targetNetworkId].targetMessageActions.ContainsKey(networkOrderId))
909910
{
910911
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("No target messageType for message found");
911912
messageReader.Dispose();
912913
return;
913914
}
914-
else if (!SpawnManager.spawnedObjects[targetNetworkId].targetMessageActions[networkOrderId].ContainsKey(messageType))
915+
else if (!SpawnManager.SpawnedObjects[targetNetworkId].targetMessageActions[networkOrderId].ContainsKey(messageType))
915916
{
916917
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("No target found with the given messageType");
917918
messageReader.Dispose();
918919
return;
919920
}
920-
if (SpawnManager.spawnedObjects[targetNetworkId].targetMessageActions[networkOrderId].ContainsKey(messageType))
921+
if (SpawnManager.SpawnedObjects[targetNetworkId].targetMessageActions[networkOrderId].ContainsKey(messageType))
921922
{
922-
SpawnManager.spawnedObjects[targetNetworkId].targetMessageActions[networkOrderId][messageType].Invoke(clientId, messageReader);
923+
SpawnManager.SpawnedObjects[targetNetworkId].targetMessageActions[networkOrderId][messageType].Invoke(clientId, messageReader);
923924
}
924925
}
925926
else
@@ -1036,7 +1037,7 @@ internal void DisconnectClient(uint clientId)
10361037
diffieHellmanPublicKeys.Remove(clientId);
10371038
#endif
10381039

1039-
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.spawnedObjects)
1040+
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
10401041
pair.Value.observers.Remove(clientId);
10411042

10421043
NetworkConfig.NetworkTransport.DisconnectClient(clientId);
@@ -1064,7 +1065,7 @@ internal void OnClientDisconnectFromServer(uint clientId)
10641065

10651066
if (isServer)
10661067
{
1067-
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.spawnedObjects)
1068+
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
10681069
pair.Value.observers.Remove(clientId);
10691070

10701071
using (BitWriter writer = BitWriter.Get())
@@ -1138,7 +1139,7 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
11381139
ConnectedClients[clientId].PlayerObject = netObject;
11391140
}
11401141

1141-
int amountOfObjectsToSend = SpawnManager.spawnedObjects.Values.Count;
1142+
int amountOfObjectsToSend = SpawnManager.SpawnedObjects.Values.Count;
11421143

11431144
using (BitWriter writer = BitWriter.Get())
11441145
{
@@ -1174,7 +1175,7 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
11741175
{
11751176
writer.WriteInt(amountOfObjectsToSend);
11761177

1177-
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.spawnedObjects)
1178+
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
11781179
{
11791180
pair.Value.RebuildObservers(clientId); //Rebuilds observers for the new client
11801181

@@ -1640,7 +1641,7 @@ public void SendToClients<T>(string messageType, string channelName, T instance)
16401641
/// <returns>Returns the NetworkedObject</returns>
16411642
public NetworkedObject GetNetworkedObject(uint networkId)
16421643
{
1643-
return SpawnManager.spawnedObjects[networkId];
1644+
return SpawnManager.SpawnedObjects[networkId];
16441645
}
16451646
#endregion
16461647
}

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Receive.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -191,59 +191,59 @@ internal static void HandleSpawnPoolObject(uint clientId, BitReader reader, int
191191
float yRot = reader.ReadFloat();
192192
float zRot = reader.ReadFloat();
193193

194-
SpawnManager.spawnedObjects[netId].transform.position = new Vector3(xPos, yPos, zPos);
195-
SpawnManager.spawnedObjects[netId].transform.rotation = Quaternion.Euler(xRot, yRot, zRot);
196-
SpawnManager.spawnedObjects[netId].gameObject.SetActive(true);
194+
SpawnManager.SpawnedObjects[netId].transform.position = new Vector3(xPos, yPos, zPos);
195+
SpawnManager.SpawnedObjects[netId].transform.rotation = Quaternion.Euler(xRot, yRot, zRot);
196+
SpawnManager.SpawnedObjects[netId].gameObject.SetActive(true);
197197
}
198198

199199
internal static void HandleDestroyPoolObject(uint clientId, BitReader reader, int channelId)
200200
{
201201
uint netId = reader.ReadUInt();
202-
SpawnManager.spawnedObjects[netId].gameObject.SetActive(false);
202+
SpawnManager.SpawnedObjects[netId].gameObject.SetActive(false);
203203
}
204204

205205
internal static void HandleChangeOwner(uint clientId, BitReader reader, int channelId)
206206
{
207207
uint netId = reader.ReadUInt();
208208
uint ownerClientId = reader.ReadUInt();
209-
if (SpawnManager.spawnedObjects[netId].OwnerClientId == netManager.LocalClientId)
209+
if (SpawnManager.SpawnedObjects[netId].OwnerClientId == netManager.LocalClientId)
210210
{
211211
//We are current owner.
212-
SpawnManager.spawnedObjects[netId].InvokeBehaviourOnLostOwnership();
212+
SpawnManager.SpawnedObjects[netId].InvokeBehaviourOnLostOwnership();
213213
}
214214
if (ownerClientId == netManager.LocalClientId)
215215
{
216216
//We are new owner.
217-
SpawnManager.spawnedObjects[netId].InvokeBehaviourOnGainedOwnership();
217+
SpawnManager.SpawnedObjects[netId].InvokeBehaviourOnGainedOwnership();
218218
}
219-
SpawnManager.spawnedObjects[netId].OwnerClientId = ownerClientId;
219+
SpawnManager.SpawnedObjects[netId].OwnerClientId = ownerClientId;
220220
}
221221

222222
internal static void HandleSyncVarUpdate(uint clientId, BitReader reader, int channelId)
223223
{
224224
uint netId = reader.ReadUInt();
225225
ushort orderIndex = reader.ReadUShort();
226226

227-
if (!SpawnManager.spawnedObjects.ContainsKey(netId))
227+
if (!SpawnManager.SpawnedObjects.ContainsKey(netId))
228228
{
229229
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("Sync message recieved for a non existant object with id: " + netId);
230230
return;
231231
}
232-
else if (SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex) == null)
232+
else if (SpawnManager.SpawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex) == null)
233233
{
234234
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("Sync message recieved for a non existant behaviour");
235235
return;
236236
}
237237

238-
for (int i = 0; i < SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields.Count; i++)
238+
for (int i = 0; i < SpawnManager.SpawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields.Count; i++)
239239
{
240240
if (!reader.ReadBool())
241241
continue;
242-
SyncedVarField field = SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields[i];
243-
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(FieldTypeHelper.ReadFieldType(reader,
242+
SyncedVarField field = SpawnManager.SpawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).syncedVarFields[i];
243+
SpawnManager.SpawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate(FieldTypeHelper.ReadFieldType(reader,
244244
field.FieldInfo.FieldType, field.FieldValue), i);
245245
}
246-
SpawnManager.spawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate();
246+
SpawnManager.SpawnedObjects[netId].GetBehaviourAtOrderIndex(orderIndex).OnSyncVarUpdate();
247247
}
248248

249249
internal static void HandleAddObjects(uint clientId, BitReader reader, int channelId)
@@ -299,7 +299,7 @@ internal static void HandleCommand(uint clientId, BitReader reader, int channelI
299299
uint networkId = reader.ReadUInt();
300300
ushort orderId = reader.ReadUShort();
301301
ulong hash = reader.ReadULong();
302-
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
302+
NetworkedBehaviour behaviour = SpawnManager.SpawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
303303
if (clientId != behaviour.OwnerClientId)
304304
return; // Not owner
305305
MethodInfo targetMethod = null;
@@ -321,7 +321,7 @@ internal static void HandleRpc(uint clientId, BitReader reader, int channelId)
321321
uint networkId = reader.ReadUInt();
322322
ushort orderId = reader.ReadUShort();
323323
ulong hash = reader.ReadULong();
324-
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
324+
NetworkedBehaviour behaviour = SpawnManager.SpawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
325325
MethodInfo targetMethod = null;
326326
if (behaviour.cachedMethods.ContainsKey(hash))
327327
targetMethod = behaviour.cachedMethods[hash];
@@ -341,7 +341,7 @@ internal static void HandleTargetRpc(uint clientId, BitReader reader, int channe
341341
uint networkId = reader.ReadUInt();
342342
ushort orderId = reader.ReadUShort();
343343
ulong hash = reader.ReadULong();
344-
NetworkedBehaviour behaviour = SpawnManager.spawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
344+
NetworkedBehaviour behaviour = SpawnManager.SpawnedObjects[networkId].GetBehaviourAtOrderIndex(orderId);
345345
MethodInfo targetMethod = null;
346346
if (behaviour.cachedMethods.ContainsKey(hash))
347347
targetMethod = behaviour.cachedMethods[hash];
@@ -358,8 +358,8 @@ internal static void HandleSetVisibility(uint clientId, BitReader reader, int ch
358358
uint networkId = reader.ReadUInt();
359359
bool visibility = reader.ReadBool();
360360
if (visibility)
361-
SpawnManager.spawnedObjects[networkId].SetFormattedSyncedVarData(reader);
362-
SpawnManager.spawnedObjects[networkId].SetLocalVisibility(visibility);
361+
SpawnManager.SpawnedObjects[networkId].SetFormattedSyncedVarData(reader);
362+
SpawnManager.SpawnedObjects[networkId].SetLocalVisibility(visibility);
363363
}
364364
}
365365
}

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Send.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ internal static bool Send(uint clientId, string messageType, string channelName,
4949
targetClientId = netManager.NetworkConfig.NetworkTransport.ServerNetId;
5050
}
5151
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we return
52-
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientId))
52+
if (netManager.isServer && fromNetId != null && !SpawnManager.SpawnedObjects[fromNetId.Value].observers.Contains(clientId))
5353
return false;
5454

5555
bool isPassthrough = (!netManager.isServer && clientId != netManager.NetworkConfig.NetworkTransport.ServerNetId && netManager.NetworkConfig.AllowPassthroughMessages);
@@ -126,7 +126,7 @@ internal static void Send(uint[] clientIds, string messageType, string channelNa
126126
}
127127

128128
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
129-
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
129+
if (netManager.isServer && fromNetId != null && !SpawnManager.SpawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
130130
continue;
131131

132132
writer.Finalize(ref FinalMessageBuffer);
@@ -168,7 +168,7 @@ internal static void Send(List<uint> clientIds, string messageType, string chann
168168
}
169169

170170
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
171-
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
171+
if (netManager.isServer && fromNetId != null && !SpawnManager.SpawnedObjects[fromNetId.Value].observers.Contains(clientIds[i]))
172172
continue;
173173

174174
writer.Finalize(ref FinalMessageBuffer);
@@ -215,7 +215,7 @@ internal static ref List<uint> Send(string messageType, string channelName, BitW
215215
}
216216

217217
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
218-
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
218+
if (netManager.isServer && fromNetId != null && !SpawnManager.SpawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
219219
{
220220
failedObservers.Add(pair.Key);
221221
continue;
@@ -266,7 +266,7 @@ internal static ref List<uint> Send(string messageType, string channelName, BitW
266266
}
267267

268268
//If we respect the observers, and the message is targeted (networkId != null) and the targetedNetworkId isnt observing the receiver. Then we continue
269-
if (netManager.isServer && fromNetId != null && !SpawnManager.spawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
269+
if (netManager.isServer && fromNetId != null && !SpawnManager.SpawnedObjects[fromNetId.Value].observers.Contains(pair.Key))
270270
{
271271
failedObservers.Add(pair.Key);
272272
continue;

MLAPI/NetworkingManagerComponents/Core/NetworkSceneManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ internal static void OnSceneSwitch(uint sceneIndex)
9595
private static void OnSceneLoaded(AsyncOperation operation)
9696
{
9797
SceneManager.SetActiveScene(nextScene);
98-
List<NetworkedObject> objectsToKeep = SpawnManager.spawnedObjects.Values.ToList();
98+
List<NetworkedObject> objectsToKeep = SpawnManager.SpawnedObjectsList;
9999
//The last loaded scene
100100
nextScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
101101
for (int i = 0; i < objectsToKeep.Count; i++)

0 commit comments

Comments
 (0)