public void ServerRpcMessageTest() { // try setting value with constructor var message = new ServerRpcMessage { netId = 42, componentIndex = 4, functionHash = 0xABCDEF, payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 }) }; byte[] arr = MessagePacker.Pack(message); // deserialize the same data - do we get the same result? ServerRpcMessage fresh = MessagePacker.Unpack <ServerRpcMessage>(arr); Assert.That(fresh.netId, Is.EqualTo(message.netId)); Assert.That(fresh.componentIndex, Is.EqualTo(message.componentIndex)); Assert.That(fresh.functionHash, Is.EqualTo(message.functionHash)); Assert.That(fresh.payload, Has.Count.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 static void Send(NetworkBehaviour behaviour, int index, NetworkWriter writer, int channelId, bool requireAuthority) { Validate(behaviour, index, requireAuthority); var message = new ServerRpcMessage { netId = behaviour.NetId, componentIndex = behaviour.ComponentIndex, functionIndex = index, payload = writer.ToArraySegment() }; behaviour.Client.Send(message, channelId); }