Skip to content

Commit 1f14ded

Browse files
committed
Added a NetworkStart method to all NetworkedBehaviours which is invoked when handlers are ready to be added
1 parent 0d099c8 commit 1f14ded

File tree

4 files changed

+40
-11
lines changed

4 files changed

+40
-11
lines changed

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace MLAPI
77
{
88
public abstract class NetworkedBehaviour : MonoBehaviour
99
{
10-
protected bool isLocalPlayer
10+
public bool isLocalPlayer
1111
{
1212
get
1313
{
@@ -35,7 +35,7 @@ protected bool isHost
3535
return NetworkingManager.singleton.isHost;
3636
}
3737
}
38-
protected NetworkedObject networkedObject
38+
public NetworkedObject networkedObject
3939
{
4040
get
4141
{
@@ -66,6 +66,20 @@ public int ownerClientId
6666
//Change data type
6767
private Dictionary<string, int> registeredMessageHandlers = new Dictionary<string, int>();
6868

69+
private void OnEnable()
70+
{
71+
if (_networkedObject == null)
72+
{
73+
_networkedObject = GetComponentInParent<NetworkedObject>();
74+
}
75+
}
76+
77+
internal bool networkedStartInvoked = false;
78+
public virtual void NetworkStart()
79+
{
80+
81+
}
82+
6983
protected int RegisterMessageHandler(string name, Action<int, byte[]> action)
7084
{
7185
int counter = MessageManager.AddIncomingMessageHandler(name, action, networkId);

MLAPI/MonoBehaviours/Core/NetworkedObject.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,18 @@ public void SpawnWithOwnership(int clientId)
4646
{
4747
SpawnManager.OnSpawnObject(this, clientId);
4848
}
49+
50+
internal void InvokeBehaviourNetworkSpawn()
51+
{
52+
NetworkedBehaviour[] netBehaviours = GetComponentsInChildren<NetworkedBehaviour>();
53+
for (int i = 0; i < netBehaviours.Length; i++)
54+
{
55+
//We check if we are it's networkedObject owner incase a networkedObject exists as a child of our networkedObject.
56+
if(netBehaviours[i].networkedObject == this && !netBehaviours[i].networkedStartInvoked)
57+
{
58+
netBehaviours[i].NetworkStart();
59+
}
60+
}
61+
}
4962
}
5063
}

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
8383
ConnectionConfig cConfig = new ConnectionConfig();
8484

8585
//MLAPI channels and messageTypes
86-
NetworkConfig.Channels.Add("MLAPI_RELIABLE_FRAGMENTED", QosType.ReliableFragmented);
86+
NetworkConfig.Channels.Add("MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", QosType.ReliableFragmentedSequenced);
8787
NetworkConfig.Channels.Add("MLAPI_POSITION_UPDATE", QosType.StateUpdate);
8888
MessageManager.messageTypes.Add("MLAPI_CONNECTION_REQUEST", 0);
8989
MessageManager.messageTypes.Add("MLAPI_CONNECTION_APPROVED", 1);
@@ -284,7 +284,7 @@ private void Update()
284284
writer.Write(NetworkConfig.ConnectionData);
285285
}
286286
}
287-
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED", writeStream.GetBuffer());
287+
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
288288
}
289289
}
290290
break;
@@ -742,7 +742,7 @@ private void OnClientDisconnect(int clientId)
742742
{
743743
writer.Write(clientId);
744744
}
745-
Send("MLAPI_CLIENT_DISCONNECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer(), clientId);
745+
Send("MLAPI_CLIENT_DISCONNECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), clientId);
746746
}
747747
}
748748
}
@@ -811,7 +811,7 @@ private void HandleApproval(int clientId, bool approved)
811811
}
812812
}
813813
}
814-
Send(clientId, "MLAPI_CONNECTION_APPROVED", "MLAPI_RELIABLE_FRAGMENTED", writeStream.GetBuffer());
814+
Send(clientId, "MLAPI_CONNECTION_APPROVED", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
815815
}
816816

817817
//Inform old clients of the new player
@@ -837,7 +837,7 @@ private void HandleApproval(int clientId, bool approved)
837837
writer.Write(clientId);
838838
}
839839
}
840-
Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer(), clientId);
840+
Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), clientId);
841841
}
842842
}
843843
else

MLAPI/NetworkingManagerComponents/SpawnManager.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ internal static GameObject SpawnObject(int spawnablePrefabIndex, uint networkId,
5252
netObject.OwnerClientId = ownerId;
5353

5454
spawnedObjects.Add(netObject.NetworkId, netObject);
55+
netObject.InvokeBehaviourNetworkSpawn();
5556
return go;
5657
}
5758

@@ -76,6 +77,7 @@ internal static GameObject SpawnPlayerObject(int clientId, uint networkId)
7677
netObject.isPlayerObject = true;
7778
netManager.connectedClients[clientId].PlayerObject = go;
7879
spawnedObjects.Add(netObject.NetworkId, netObject);
80+
netObject.InvokeBehaviourNetworkSpawn();
7981
return go;
8082
}
8183

@@ -97,9 +99,9 @@ internal static void OnDestroyObject(uint networkId, bool destroyGameObject)
9799
}
98100
//If we are host, send to everyone except ourselves. Otherwise, send to all
99101
if (netManager.isHost)
100-
netManager.Send("MLAPI_DESTROY_OBJECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer(), -1);
102+
netManager.Send("MLAPI_DESTROY_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), -1);
101103
else
102-
netManager.Send("MLAPI_DESTROY_OBJECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer());
104+
netManager.Send("MLAPI_DESTROY_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer());
103105
}
104106
}
105107
}
@@ -151,9 +153,9 @@ internal static void OnSpawnObject(NetworkedObject netObject, int? clientOwnerId
151153
}
152154
//If we are host, send to everyone except ourselves. Otherwise, send to all
153155
if (netManager.isHost)
154-
netManager.Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer(), -1);
156+
netManager.Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), -1);
155157
else
156-
netManager.Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED", stream.GetBuffer());
158+
netManager.Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer());
157159
}
158160
}
159161
}

0 commit comments

Comments
 (0)