Skip to content

Commit b300c11

Browse files
committed
Removed SyncedVar & Observer system
1 parent dcfa288 commit b300c11

File tree

11 files changed

+118
-870
lines changed

11 files changed

+118
-870
lines changed

MLAPI-Editor/NetworkedObjectEditor.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,6 @@ public override void OnInspectorGUI()
4646
EditorGUILayout.LabelField("isObjectOwner: ", networkedObject.isObjectOwner.ToString(), EditorStyles.label);
4747
EditorGUILayout.LabelField("isPoolObject: ", networkedObject.isPooledObject.ToString(), EditorStyles.label);
4848
EditorGUILayout.LabelField("isPlayerObject: ", networkedObject.isPlayerObject.ToString(), EditorStyles.label);
49-
50-
if (networkedObject.observers != null && networkedObject.observers.Count > 0)
51-
{
52-
showObservers = EditorGUILayout.Foldout(showObservers, "Observers");
53-
if (showObservers)
54-
{
55-
EditorGUI.indentLevel += 1;
56-
foreach (var o in networkedObject.observers)
57-
{
58-
if (NetworkingManager.singleton.ConnectedClients[o].PlayerObject != null)
59-
EditorGUILayout.ObjectField("ClientId: " + o, NetworkingManager.singleton.ConnectedClients[o].PlayerObject, typeof(GameObject), false);
60-
else
61-
EditorGUILayout.TextField("ClientId: " + o, EditorStyles.label);
62-
}
63-
EditorGUI.indentLevel -= 1;
64-
}
65-
}
6649
}
6750
}
6851
}

MLAPI/MLAPI.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@
114114
<Compile Include="GlobalSuppressions.cs" />
115115
<Compile Include="MonoBehaviours\Prototyping\NetworkedAnimator.cs" />
116116
<Compile Include="MonoBehaviours\Prototyping\NetworkedNavMeshAgent.cs" />
117-
<Compile Include="MonoBehaviours\Prototyping\NetworkedProximity.cs" />
118117
<Compile Include="NetworkingManagerComponents\Binary\Arithmetic.cs" />
119118
<Compile Include="NetworkingManagerComponents\Binary\BitStream.cs" />
120119
<Compile Include="NetworkingManagerComponents\Binary\BitWriter.cs" />

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 86 additions & 389 deletions
Large diffs are not rendered by default.

MLAPI/MonoBehaviours/Core/NetworkedObject.cs

Lines changed: 3 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using MLAPI.Data;
2-
using MLAPI.NetworkingManagerComponents.Binary;
1+
using MLAPI.NetworkingManagerComponents.Binary;
32
using MLAPI.NetworkingManagerComponents.Core;
43
using System;
54
using System.Collections.Generic;
@@ -13,6 +12,8 @@ namespace MLAPI.MonoBehaviours.Core
1312
[AddComponentMenu("MLAPI/NetworkedObject", -99)]
1413
public sealed class NetworkedObject : MonoBehaviour
1514
{
15+
internal static readonly List<NetworkedBehaviour> NetworkedBehaviours = new List<NetworkedBehaviour>();
16+
1617
private void OnValidate()
1718
{
1819
if (string.IsNullOrEmpty(NetworkedPrefabName))
@@ -85,85 +86,6 @@ internal set
8586
public bool isSpawned { get; internal set; }
8687
internal bool? sceneObject = null;
8788

88-
/// <summary>
89-
/// The current clients observing the object
90-
/// </summary>
91-
public readonly HashSet<uint> observers = new HashSet<uint>();
92-
private readonly HashSet<uint> previousObservers = new HashSet<uint>();
93-
94-
internal void RebuildObservers(uint? clientId = null)
95-
{
96-
bool initial = clientId != null;
97-
if (initial)
98-
{
99-
bool shouldBeAdded = true;
100-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
101-
{
102-
bool state = childNetworkedBehaviours[i].OnCheckObserver(clientId.Value);
103-
if (state == false)
104-
{
105-
shouldBeAdded = false;
106-
break;
107-
}
108-
}
109-
if (shouldBeAdded)
110-
observers.Add(clientId.Value);
111-
}
112-
else
113-
{
114-
previousObservers.Clear();
115-
foreach (var item in observers)
116-
previousObservers.Add(item);
117-
bool update = false;
118-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
119-
{
120-
bool changed = childNetworkedBehaviours[i].OnRebuildObservers(observers);
121-
if (changed)
122-
{
123-
update = true;
124-
break;
125-
}
126-
}
127-
if (update)
128-
{
129-
foreach (KeyValuePair<uint, NetworkedClient> pair in NetworkingManager.singleton.ConnectedClients)
130-
{
131-
if (pair.Key == NetworkingManager.singleton.NetworkConfig.NetworkTransport.HostDummyId)
132-
continue;
133-
if ((previousObservers.Contains(pair.Key) && !observers.Contains(pair.Key)) ||
134-
(!previousObservers.Contains(pair.Key) && observers.Contains(pair.Key)))
135-
{
136-
//Something changed for this client.
137-
using (BitWriter writer = BitWriter.Get())
138-
{
139-
writer.WriteUInt(NetworkId);
140-
writer.WriteBool(observers.Contains(pair.Key));
141-
142-
if (observers.Contains(pair.Key))
143-
WriteFormattedSyncedVarData(writer);
144-
145-
InternalMessageHandler.Send(pair.Key, "MLAPI_SET_VISIBILITY", "MLAPI_INTERNAL", writer, null);
146-
}
147-
}
148-
}
149-
}
150-
else
151-
{
152-
foreach (var item in previousObservers)
153-
observers.Add(item);
154-
}
155-
previousObservers.Clear();
156-
}
157-
}
158-
159-
internal void SetLocalVisibility(bool visibility)
160-
{
161-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
162-
{
163-
childNetworkedBehaviours[i].OnSetLocalVisibility(visibility);
164-
}
165-
}
166-
16789
private void OnDestroy()
16890
{
16991
if (NetworkingManager.singleton != null)
@@ -247,7 +169,6 @@ internal void InvokeBehaviourNetworkSpawn(BitReader reader)
247169
{
248170
childNetworkedBehaviours[i].InternalNetworkStart();
249171
childNetworkedBehaviours[i].NetworkStart(reader);
250-
childNetworkedBehaviours[i].SyncVarInit();
251172
childNetworkedBehaviours[i].networkedStartInvoked = true;
252173
}
253174
}
@@ -272,15 +193,6 @@ internal List<NetworkedBehaviour> childNetworkedBehaviours
272193
}
273194
}
274195

275-
internal static List<NetworkedBehaviour> NetworkedBehaviours = new List<NetworkedBehaviour>();
276-
internal static void InvokeSyncvarUpdate()
277-
{
278-
for (int i = 0; i < NetworkedBehaviours.Count; i++)
279-
{
280-
NetworkedBehaviours[i].SyncVarUpdate();
281-
}
282-
}
283-
284196
internal static void NetworkedVarPrepareSend()
285197
{
286198
for (int i = 0; i < NetworkedBehaviours.Count; i++)
@@ -319,52 +231,6 @@ internal void SetNetworkedVarData(BitReader reader)
319231
}
320232
}
321233

322-
323-
//Writes SyncedVar data in a formatted way so that the SetFormattedSyncedVarData method can read it.
324-
//The format doesn't NECCECARLY correspond with the "general syncedVar message layout"
325-
//as this should only be used for reading SyncedVar data that is to be read by the SetFormattedData method
326-
//*
327-
//The data contains every syncedvar on every behaviour that belongs to this object
328-
internal void WriteFormattedSyncedVarData(BitWriter writer)
329-
{
330-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
331-
{
332-
childNetworkedBehaviours[i].SyncVarInit();
333-
if (childNetworkedBehaviours[i].syncedVarFields.Count == 0)
334-
continue;
335-
writer.WriteUShort(GetOrderIndex(childNetworkedBehaviours[i])); //Write the behaviourId
336-
for (int j = 0; j < childNetworkedBehaviours[i].syncedVarFields.Count; j++)
337-
FieldTypeHelper.WriteFieldType(writer, childNetworkedBehaviours[i].syncedVarFields[j].FieldValue);
338-
}
339-
}
340-
341-
//Reads formatted data that the "WriteFormattedSyncedVarData" has written and applies the values to SyncedVar fields
342-
internal void SetFormattedSyncedVarData(BitReader reader)
343-
{
344-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
345-
{
346-
childNetworkedBehaviours[i].SyncVarInit();
347-
if (childNetworkedBehaviours[i].syncedVarFields.Count == 0)
348-
continue;
349-
NetworkedBehaviour behaviour = GetBehaviourAtOrderIndex(reader.ReadUShort());
350-
for (int j = 0; j < childNetworkedBehaviours[i].syncedVarFields.Count; j++)
351-
{
352-
childNetworkedBehaviours[i].syncedVarFields[j].FieldInfo.SetValue(behaviour,
353-
FieldTypeHelper.ReadFieldType(reader, childNetworkedBehaviours[i].syncedVarFields[j].FieldInfo.FieldType));
354-
}
355-
behaviour.OnSyncVarUpdate();
356-
}
357-
}
358-
359-
//Forces a SycnedVar update to a specific client.
360-
internal void FlushSyncedVarsToClient(uint clientId)
361-
{
362-
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
363-
{
364-
childNetworkedBehaviours[i].FlushSyncedVarsToClient(clientId);
365-
}
366-
}
367-
368234
internal ushort GetOrderIndex(NetworkedBehaviour instance)
369235
{
370236
for (ushort i = 0; i < childNetworkedBehaviours.Count; i++)

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -356,13 +356,13 @@ private object Init(bool server)
356356
MessageManager.messageTypes.Add("MLAPI_SPAWN_POOL_OBJECT", 6);
357357
MessageManager.messageTypes.Add("MLAPI_DESTROY_POOL_OBJECT", 7);
358358
MessageManager.messageTypes.Add("MLAPI_CHANGE_OWNER", 8);
359-
MessageManager.messageTypes.Add("MLAPI_SYNC_VAR_UPDATE", 9);
359+
//MessageManager.messageTypes.Add("MLAPI_SYNC_VAR_UPDATE", 9); //NOT IN USE
360360
MessageManager.messageTypes.Add("MLAPI_ADD_OBJECTS", 10);
361361
MessageManager.messageTypes.Add("MLAPI_TIME_SYNC", 11);
362362
MessageManager.messageTypes.Add("MLAPI_COMMAND", 12);
363363
MessageManager.messageTypes.Add("MLAPI_RPC", 13);
364364
MessageManager.messageTypes.Add("MLAPI_TARGET", 14);
365-
MessageManager.messageTypes.Add("MLAPI_SET_VISIBILITY", 15);
365+
//MessageManager.messageTypes.Add("MLAPI_SET_VISIBILITY", 15); //NOT IN USE
366366
MessageManager.messageTypes.Add("MLAPI_NETWORKED_VAR_DELTA", 16);
367367
MessageManager.messageTypes.Add("MLAPI_NETWORKED_VAR_UPDATE", 17);
368368

@@ -604,7 +604,7 @@ public void StartHost(Vector3? pos = null, Quaternion? rot = null, int prefabId
604604
if (NetworkConfig.HandleObjectSpawning)
605605
{
606606
prefabId = prefabId == -1 ? NetworkConfig.NetworkPrefabIds[NetworkConfig.PlayerPrefabName] : prefabId;
607-
SpawnManager.CreateSpawnedObject(prefabId, 0, hostClientId, true, pos.GetValueOrDefault(), rot.GetValueOrDefault(), null, false, false, false);
607+
SpawnManager.CreateSpawnedObject(prefabId, 0, hostClientId, true, pos.GetValueOrDefault(), rot.GetValueOrDefault(), null, false, false);
608608
}
609609

610610
SpawnSceneObjects();
@@ -718,7 +718,7 @@ private void Update()
718718
if (NetworkConfig.ConnectionApproval)
719719
writer.WriteByteArray(NetworkConfig.ConnectionData);
720720

721-
InternalMessageHandler.Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_INTERNAL", writer, null, null, null, true);
721+
InternalMessageHandler.Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_INTERNAL", writer, null, null, true);
722722
}
723723
}
724724
NetworkProfiler.EndEvent();
@@ -756,7 +756,6 @@ private void Update()
756756
NetworkProfiler.StartTick(TickType.Event);
757757
eventOvershootCounter += ((NetworkTime - lastEventTickTime) - (1f / NetworkConfig.EventTickrate));
758758
LagCompensationManager.AddFrames();
759-
NetworkedObject.InvokeSyncvarUpdate();
760759
lastEventTickTime = NetworkTime;
761760
NetworkProfiler.EndTick();
762761
}
@@ -986,9 +985,7 @@ private void HandleIncomingData(uint clientId, byte[] data, int channelId, uint
986985
if (isClient)
987986
InternalMessageHandler.HandleChangeOwner(clientId, messageReader, channelId);
988987
break;
989-
case 9: //Syncvar
990-
if (isClient)
991-
InternalMessageHandler.HandleSyncVarUpdate(clientId, messageReader, channelId);
988+
case 9: //UNUSED
992989
break;
993990
case 10:
994991
if (isClient) //MLAPI_ADD_OBJECTS (plural)
@@ -1010,9 +1007,7 @@ private void HandleIncomingData(uint clientId, byte[] data, int channelId, uint
10101007
if (isClient)
10111008
InternalMessageHandler.HandleTargetRpc(clientId, messageReader, channelId);
10121009
break;
1013-
case 15:
1014-
if (isClient)
1015-
InternalMessageHandler.HandleSetVisibility(clientId, messageReader, channelId);
1010+
case 15: //UNUSED
10161011
break;
10171012
case 16:
10181013
// Handled on both client and server
@@ -1047,9 +1042,6 @@ internal void DisconnectClient(uint clientId)
10471042
diffieHellmanPublicKeys.Remove(clientId);
10481043
#endif
10491044

1050-
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
1051-
pair.Value.observers.Remove(clientId);
1052-
10531045
NetworkConfig.NetworkTransport.DisconnectClient(clientId);
10541046
}
10551047

@@ -1075,9 +1067,6 @@ internal void OnClientDisconnectFromServer(uint clientId)
10751067

10761068
if (isServer)
10771069
{
1078-
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
1079-
pair.Value.observers.Remove(clientId);
1080-
10811070
using (BitWriter writer = BitWriter.Get())
10821071
{
10831072
writer.WriteUInt(clientId);
@@ -1145,7 +1134,7 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
11451134
if(NetworkConfig.HandleObjectSpawning)
11461135
{
11471136
prefabId = prefabId == -1 ? NetworkConfig.NetworkPrefabIds[NetworkConfig.PlayerPrefabName] : prefabId;
1148-
netObject = SpawnManager.CreateSpawnedObject(prefabId, 0, clientId, true, position, rotation, null, false, false, false);
1137+
netObject = SpawnManager.CreateSpawnedObject(prefabId, 0, clientId, true, position, rotation, null, false, false);
11491138
ConnectedClients[clientId].PlayerObject = netObject;
11501139
}
11511140

@@ -1177,25 +1166,19 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
11771166
if (item.Key == clientId)
11781167
continue;
11791168
writer.WriteUInt(item.Key); //ClientId
1180-
1181-
if (netObject != null)
1182-
netObject.RebuildObservers(item.Key);
11831169
}
11841170
if (NetworkConfig.HandleObjectSpawning)
11851171
{
11861172
writer.WriteInt(amountOfObjectsToSend);
11871173

11881174
foreach (KeyValuePair<uint, NetworkedObject> pair in SpawnManager.SpawnedObjects)
11891175
{
1190-
pair.Value.RebuildObservers(clientId); //Rebuilds observers for the new client
1191-
11921176
writer.WriteBool(pair.Value.isPlayerObject);
11931177
writer.WriteUInt(pair.Value.NetworkId);
11941178
writer.WriteUInt(pair.Value.OwnerClientId);
11951179
writer.WriteInt(NetworkConfig.NetworkPrefabIds[pair.Value.NetworkedPrefabName]);
11961180
writer.WriteBool(pair.Value.gameObject.activeInHierarchy);
11971181
writer.WriteBool(pair.Value.sceneObject == null ? true : pair.Value.sceneObject.Value);
1198-
writer.WriteBool(pair.Value.observers.Contains(clientId));
11991182

12001183
writer.WriteFloat(pair.Value.transform.position.x);
12011184
writer.WriteFloat(pair.Value.transform.position.y);
@@ -1205,12 +1188,10 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
12051188
writer.WriteFloat(pair.Value.transform.rotation.eulerAngles.y);
12061189
writer.WriteFloat(pair.Value.transform.rotation.eulerAngles.z);
12071190

1208-
if (pair.Value.observers.Contains(clientId))
1209-
pair.Value.WriteFormattedSyncedVarData(writer);
12101191
pair.Value.WriteNetworkedVarData(writer, clientId);
12111192
}
12121193
}
1213-
InternalMessageHandler.Send(clientId, "MLAPI_CONNECTION_APPROVED", "MLAPI_INTERNAL", writer, null, null, null, true);
1194+
InternalMessageHandler.Send(clientId, "MLAPI_CONNECTION_APPROVED", "MLAPI_INTERNAL", writer, null, null, true);
12141195

12151196
if (OnClientConnectedCallback != null)
12161197
OnClientConnectedCallback.Invoke(clientId);
@@ -1232,7 +1213,6 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
12321213
writer.WriteUInt(clientId);
12331214
writer.WriteInt(prefabId);
12341215
writer.WriteBool(false);
1235-
writer.WriteBool(ConnectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().observers.Contains(clientPair.Key));
12361216

12371217
writer.WriteFloat(ConnectedClients[clientId].PlayerObject.transform.position.x);
12381218
writer.WriteFloat(ConnectedClients[clientId].PlayerObject.transform.position.y);
@@ -1244,8 +1224,6 @@ internal void HandleApproval(uint clientId, int prefabId, bool approved, Vector3
12441224

12451225
writer.WriteBool(false); //No payload data
12461226

1247-
if (ConnectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().observers.Contains(clientPair.Key))
1248-
ConnectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().WriteFormattedSyncedVarData(writer);
12491227
ConnectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().WriteNetworkedVarData(writer, clientPair.Key);
12501228
}
12511229
else

0 commit comments

Comments
 (0)