public void UpdateVarsMessageTest() { // try setting value with constructor UpdateVarsMessage message = new UpdateVarsMessage { netId = 42, payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 }) }; // serialize NetworkWriter writer = new NetworkWriter(); message.Serialize(writer); byte[] writerData = writer.ToArray(); // deserialize the same data - do we get the same result? UpdateVarsMessage fresh = new UpdateVarsMessage(); fresh.Deserialize(new NetworkReader(writerData)); Assert.That(fresh.netId, Is.EqualTo(message.netId)); Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count)); for (int i = 0; i < fresh.payload.Count; ++i) { Assert.That(fresh.payload.Array[fresh.payload.Offset + i], Is.EqualTo(message.payload.Array[message.payload.Offset + i])); } }
public void UnpackWrongMessage() { SpawnMessage message = new SpawnMessage(); byte[] data = PackToByteArray(message); Assert.Throws <FormatException>(() => { UpdateVarsMessage unpacked = UnpackFromByteArray <UpdateVarsMessage>(data); }); }
public void UpdateVarsMessageTest() { // try setting value with constructor var message = new UpdateVarsMessage { netId = 42, payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 }) }; var arr = MessagePacker.Pack(message); var fresh = MessagePacker.Unpack <UpdateVarsMessage>(arr); Assert.That(fresh.netId, Is.EqualTo(message.netId)); Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count)); for (var i = 0; i < fresh.payload.Count; ++i) { Assert.That(fresh.payload.Array[fresh.payload.Offset + i], Is.EqualTo(message.payload.Array[message.payload.Offset + i])); } }
public void UpdateVarsMessage() { // try setting value with constructor UpdateVarsMessage message = new UpdateVarsMessage { netId = 42, payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 }) }; byte[] arr = MessagePackerTest.PackToByteArray(message); UpdateVarsMessage fresh = MessagePackerTest.UnpackFromByteArray <UpdateVarsMessage>(arr); Assert.That(fresh.netId, Is.EqualTo(message.netId)); Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count)); for (int i = 0; i < fresh.payload.Count; ++i) { Assert.That(fresh.payload.Array[fresh.payload.Offset + i], Is.EqualTo(message.payload.Array[message.payload.Offset + i])); } }
// invoked by unity runtime immediately after the regular "Update()" function. internal void UNetUpdate() { // go through each channel for (int channelId = 0; channelId < NetworkServer.numChannels; channelId++) { // serialize all the dirty components and send (if any were dirty) NetworkWriter writer = new NetworkWriter(); if (OnSerializeAllSafely(m_NetworkBehaviours, writer, false, channelId)) { #if UNITY_EDITOR UnityEditor.NetworkDetailStats.IncrementStat( UnityEditor.NetworkDetailStats.NetworkDirection.Outgoing, (short)MsgType.UpdateVars, name, 1); #endif // construct message and send UpdateVarsMessage message = new UpdateVarsMessage(); message.netId = netId; message.payload = writer.ToArray(); NetworkServer.SendByChannelToReady(gameObject, (short)MsgType.UpdateVars, message, channelId); } } }
static void OnUpdateVarsMessage(NetworkMessage netMsg) { UpdateVarsMessage message = netMsg.ReadMessage <UpdateVarsMessage>(); if (LogFilter.logDev) { Debug.Log("ClientScene::OnUpdateVarsMessage " + message.netId + " channel:" + netMsg.channelId); } NetworkIdentity localObject; if (s_NetworkScene.GetNetworkIdentity(message.netId, out localObject)) { localObject.OnUpdateVars(new NetworkReader(message.payload), false); } else { if (LogFilter.logWarn) { Debug.LogWarning("Did not find target for sync message for " + message.netId + " . Note: this can be completely normal because UDP messages may arrive out of order, so this message might have arrived after a Destroy message."); } } }