mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
NetworkIdentity.OnSerializeSafely: remove unnecessary ownerWritten, observersWritten parameters
This commit is contained in:
parent
6ce8dfcc23
commit
e28d7e903a
@ -28,9 +28,6 @@ public struct NetworkIdentitySerialization
|
||||
public int tick;
|
||||
public NetworkWriter ownerWriter;
|
||||
public NetworkWriter observersWriter;
|
||||
// TODO there is probably a more simple way later
|
||||
public bool ownerWritten;
|
||||
public bool observersWritten;
|
||||
}
|
||||
|
||||
/// <summary>NetworkIdentity identifies objects across the network.</summary>
|
||||
@ -871,11 +868,8 @@ bool OnSerializeSafely(NetworkBehaviour comp, NetworkWriter writer, bool initial
|
||||
// check ownerWritten/observersWritten to know if anything was written
|
||||
// We pass dirtyComponentsMask into this function so that we can check
|
||||
// if any Components are dirty before creating writers
|
||||
internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter, out bool ownerWritten, NetworkWriter observersWriter, out bool observersWritten)
|
||||
internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter, NetworkWriter observersWriter)
|
||||
{
|
||||
// clear 'written' variables
|
||||
ownerWritten = observersWritten = false;
|
||||
|
||||
// check if components are in byte.MaxRange just to be 100% sure
|
||||
// that we avoid overflows
|
||||
NetworkBehaviour[] components = NetworkBehaviours;
|
||||
@ -903,7 +897,6 @@ internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter,
|
||||
// serialize into ownerWriter first
|
||||
// (owner always gets everything!)
|
||||
OnSerializeSafely(comp, ownerWriter, initialState);
|
||||
ownerWritten = true;
|
||||
|
||||
// copy into observersWriter too if SyncMode.Observers
|
||||
// -> we copy instead of calling OnSerialize again because
|
||||
@ -919,7 +912,6 @@ internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter,
|
||||
ArraySegment<byte> segment = ownerWriter.ToArraySegment();
|
||||
int length = ownerWriter.Position - startPosition;
|
||||
observersWriter.WriteBytes(segment.Array, startPosition, length);
|
||||
observersWritten = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -940,9 +932,7 @@ internal NetworkIdentitySerialization GetSerializationAtTick(int tick)
|
||||
// serialize
|
||||
OnSerializeAllSafely(false,
|
||||
lastSerialization.ownerWriter,
|
||||
out lastSerialization.ownerWritten,
|
||||
lastSerialization.observersWriter,
|
||||
out lastSerialization.observersWritten);
|
||||
lastSerialization.observersWriter);
|
||||
|
||||
// set tick
|
||||
lastSerialization.tick = tick;
|
||||
|
@ -893,7 +893,7 @@ static ArraySegment<byte> CreateSpawnMessagePayload(bool isOwner, NetworkIdentit
|
||||
|
||||
// serialize all components with initialState = true
|
||||
// (can be null if has none)
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, out bool _, observersWriter, out bool _);
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// convert to ArraySegment to avoid reader allocations
|
||||
// if nothing was written, .ToArraySegment returns an empty segment.
|
||||
@ -1490,14 +1490,14 @@ static NetworkWriter GetEntitySerializationForConnection(NetworkIdentity identit
|
||||
if (owned)
|
||||
{
|
||||
// was it dirty / did we actually serialize anything?
|
||||
if (serialization.ownerWritten)
|
||||
if (serialization.ownerWriter.Position > 0)
|
||||
return serialization.ownerWriter;
|
||||
}
|
||||
// observers writer if not owned
|
||||
else
|
||||
{
|
||||
// was it dirty / did we actually serialize anything?
|
||||
if (serialization.observersWritten)
|
||||
if (serialization.observersWriter.Position > 0)
|
||||
return serialization.observersWriter;
|
||||
}
|
||||
|
||||
|
@ -539,7 +539,7 @@ public void ApplyPayload_SendsDataToNetworkBehaviourDeserialize()
|
||||
|
||||
NetworkWriter ownerWriter = new NetworkWriter();
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
serverIdentity.OnSerializeAllSafely(true, ownerWriter, out bool _, observersWriter, out bool _);
|
||||
serverIdentity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// check that Serialize was called
|
||||
Assert.That(onSerializeCalled, Is.EqualTo(1));
|
||||
|
@ -758,14 +758,14 @@ public void OnSerializeAndDeserializeAllSafely()
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
// error log because of the exception is expected
|
||||
LogAssert.ignoreFailingMessages = true;
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, out bool ownerWritten, observersWriter, out bool observersWritten);
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
LogAssert.ignoreFailingMessages = false;
|
||||
|
||||
// owner should have written something
|
||||
Assert.That(ownerWritten, Is.EqualTo(true));
|
||||
Assert.That(ownerWriter.Position, Is.GreaterThan(0));
|
||||
|
||||
// observers should have written something
|
||||
Assert.That(observersWritten, Is.EqualTo(true));
|
||||
Assert.That(observersWriter.Position, Is.GreaterThan(0));
|
||||
|
||||
// reset component values
|
||||
comp1.value = 0;
|
||||
@ -824,13 +824,11 @@ public void OnSerializeAllSafelyShouldNotLogErrorsForTooManyComponents()
|
||||
NetworkWriter ownerWriter = new NetworkWriter();
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, out bool ownerWritten, observersWriter, out bool observersWritten);
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// Should still write with too mnany Components because NetworkBehavioursCache should handle the error
|
||||
Assert.That(ownerWriter.Position, Is.GreaterThan(0));
|
||||
Assert.That(observersWriter.Position, Is.GreaterThan(0));
|
||||
Assert.That(ownerWritten, Is.True);
|
||||
Assert.That(observersWritten, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@ -874,7 +872,7 @@ public void OnDeserializeSafelyShouldDetectAndHandleDeSerializationMismatch()
|
||||
// serialize
|
||||
NetworkWriter ownerWriter = new NetworkWriter();
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, out bool _, observersWriter, out bool _);
|
||||
identity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// reset component values
|
||||
comp1.value = 0;
|
||||
|
@ -154,7 +154,7 @@ public void TestSynchronizingObjects()
|
||||
NetworkWriter ownerWriter = new NetworkWriter();
|
||||
// not really used in this Test
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
identity1.OnSerializeAllSafely(true, ownerWriter, out bool _, observersWriter, out bool _);
|
||||
identity1.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// set up a "client" object
|
||||
CreateNetworked(out GameObject gameObject2, out NetworkIdentity identity2, out MockPlayer player2);
|
||||
@ -417,7 +417,7 @@ public void TestSyncingAbstractNetworkBehaviour()
|
||||
NetworkWriter ownerWriter = new NetworkWriter();
|
||||
// not really used in this Test
|
||||
NetworkWriter observersWriter = new NetworkWriter();
|
||||
serverIdentity.OnSerializeAllSafely(true, ownerWriter, out bool _, observersWriter, out bool _);
|
||||
serverIdentity.OnSerializeAllSafely(true, ownerWriter, observersWriter);
|
||||
|
||||
// set up a "client" object
|
||||
CreateNetworked(out _, out NetworkIdentity clientIdentity, out SyncVarAbstractNetworkBehaviour clientBehaviour);
|
||||
|
Loading…
Reference in New Issue
Block a user