Skip to content

Commit 26072db

Browse files
committed
Changed initial spawn SyncedVar behaviour
1 parent 75f5609 commit 26072db

File tree

5 files changed

+25
-9
lines changed

5 files changed

+25
-9
lines changed

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ private void OnEnable()
120120
public virtual void NetworkStart()
121121
{
122122

123+
}
124+
/// <summary>
125+
/// Gets called when SyncedVars gets updated
126+
/// </summary>
127+
public virtual void OnSyncVarUpdate()
128+
{
129+
123130
}
124131
/// <summary>
125132
/// Gets called when the local client gains ownership of this object

MLAPI/MonoBehaviours/Core/NetworkedObject.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,11 @@ internal void RebuildObservers(uint? clientId = null)
187187
writer.WriteUInt(networkId);
188188
writer.WriteBool(observers.Contains(pair.Key));
189189

190+
if (observers.Contains(pair.Key))
191+
WriteFormattedSyncedVarData(writer);
192+
190193
InternalMessageHandler.Send(pair.Key, "MLAPI_SET_VISIBILITY", "MLAPI_INTERNAL", writer, null);
191194
}
192-
FlushToClient(pair.Key);
193195
}
194196
}
195197
}
@@ -336,6 +338,7 @@ internal void SetFormattedSyncedVarData(BitReader reader)
336338
childNetworkedBehaviours[i].syncedVarFields[j].FieldInfo.SetValue(behaviour,
337339
FieldTypeHelper.ReadFieldType(reader, childNetworkedBehaviours[i].syncedVarFields[j].FieldType));
338340
}
341+
behaviour.OnSyncVarUpdate();
339342
}
340343
}
341344

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,8 @@ internal void HandleApproval(uint clientId, bool approved, Vector3 position, Qua
11621162
writer.WriteFloat(pair.Value.transform.rotation.eulerAngles.y);
11631163
writer.WriteFloat(pair.Value.transform.rotation.eulerAngles.z);
11641164

1165-
pair.Value.WriteFormattedSyncedVarData(writer);
1165+
if (pair.Value.observers.Contains(clientId))
1166+
pair.Value.WriteFormattedSyncedVarData(writer);
11661167
}
11671168
}
11681169

@@ -1198,7 +1199,8 @@ internal void HandleApproval(uint clientId, bool approved, Vector3 position, Qua
11981199
writer.WriteFloat(connectedClients[clientId].PlayerObject.transform.rotation.eulerAngles.y);
11991200
writer.WriteFloat(connectedClients[clientId].PlayerObject.transform.rotation.eulerAngles.z);
12001201

1201-
connectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().WriteFormattedSyncedVarData(writer);
1202+
if (connectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().observers.Contains(clientPair.Key))
1203+
connectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().WriteFormattedSyncedVarData(writer);
12021204
}
12031205
else
12041206
{

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Receive.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,13 @@ internal static void HandleAddObject(uint clientId, BitReader reader, int channe
151151
{
152152
netManager.connectedClients.Add(ownerId, new NetworkedClient() { ClientId = ownerId });
153153
netManager.connectedClientsList.Add(netManager.connectedClients[ownerId]);
154-
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), reader);
154+
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), visible ? reader : null);
155155
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
156156
}
157157
else
158158
{
159159
GameObject go = SpawnManager.SpawnPrefabIndexClient(prefabId, networkId, ownerId,
160-
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), reader);
160+
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), visible ? reader : null);
161161

162162
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
163163
go.GetComponent<NetworkedObject>().sceneObject = sceneObject;
@@ -340,14 +340,14 @@ internal static void HandleAddObjects(uint clientId, BitReader reader, int chann
340340
{
341341
netManager.connectedClients.Add(ownerId, new NetworkedClient() { ClientId = ownerId });
342342
netManager.connectedClientsList.Add(netManager.connectedClients[ownerId]);
343-
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), reader);
343+
GameObject go = SpawnManager.SpawnPlayerObject(ownerId, networkId, new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), visible ? reader : null);
344344

345345
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
346346
}
347347
else
348348
{
349349
GameObject go = SpawnManager.SpawnPrefabIndexClient(prefabId, networkId, ownerId,
350-
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), reader);
350+
new Vector3(xPos, yPos, zPos), Quaternion.Euler(xRot, yRot, zRot), visible ? reader : null);
351351

352352
go.GetComponent<NetworkedObject>().SetLocalVisibility(visible);
353353
go.GetComponent<NetworkedObject>().sceneObject = sceneObject;
@@ -423,6 +423,8 @@ internal static void HandleSetVisibility(uint clientId, BitReader reader, int ch
423423
{
424424
uint networkId = reader.ReadUInt();
425425
bool visibility = reader.ReadBool();
426+
if (visibility)
427+
SpawnManager.spawnedObjects[networkId].SetFormattedSyncedVarData(reader);
426428
SpawnManager.spawnedObjects[networkId].SetLocalVisibility(visibility);
427429
}
428430
}

MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ internal static void FlushSceneObjects()
143143
writer.WriteFloat(netObject.Value.transform.rotation.eulerAngles.y);
144144
writer.WriteFloat(netObject.Value.transform.rotation.eulerAngles.z);
145145

146-
netObject.Value.WriteFormattedSyncedVarData(writer);
146+
if (netObject.Value.observers.Contains(client.Key))
147+
netObject.Value.WriteFormattedSyncedVarData(writer);
147148
}
148149
}
149150
InternalMessageHandler.Send(client.Key, "MLAPI_ADD_OBJECTS", "MLAPI_INTERNAL", writer, null);
@@ -234,7 +235,8 @@ internal static void SpawnPrefabIndexServer(NetworkedObject netObject, uint? cli
234235
writer.WriteFloat(netObject.transform.rotation.eulerAngles.y);
235236
writer.WriteFloat(netObject.transform.rotation.eulerAngles.z);
236237

237-
netObject.WriteFormattedSyncedVarData(writer);
238+
if (netObject.observers.Contains(client.Key))
239+
netObject.WriteFormattedSyncedVarData(writer);
238240

239241
InternalMessageHandler.Send(client.Key, "MLAPI_ADD_OBJECT", "MLAPI_INTERNAL", writer, null);
240242
}

0 commit comments

Comments
 (0)