public override void OnDeserialize(NetworkReader reader, bool initialState) { Debug.Log("Deserializing..."); game = new Game(); if (initialState) { game.players = ListPlayerReaderWriter.ReadListPlayer(reader); game.boardHandler = BoardHandlerReaderWriter.ReadBoard(reader); recentRoll = reader.ReadInt32(); return; } ulong dirtyBits = reader.ReadPackedUInt64(); if ((dirtyBits & 1u) != 0u) { game.players = ListPlayerReaderWriter.ReadListPlayer(reader); // Player list } if ((dirtyBits & 2u) != 0u) { game.boardHandler = BoardHandlerReaderWriter.ReadBoard(reader); // Game board } if ((dirtyBits & 4u) != 0u) { recentRoll = reader.ReadInt32(); // Recent dice roll } if ((dirtyBits & 8u) != 0u) { turnIndex = reader.ReadInt32(); // Turn index } if ((dirtyBits & 16u) != 0u) { turnCount = reader.ReadInt32(); // Turn count } }
public override bool OnSerialize(NetworkWriter writer, bool initialState) { Debug.Log("Serializing..."); if (initialState) { ListPlayerReaderWriter.WriteListPlayer(writer, game.players); BoardHandlerReaderWriter.WriteBoard(writer, game.boardHandler); writer.WriteInt32(recentRoll); return(true); } bool wroteSyncVar = false; if ((base.syncVarDirtyBits & 1u) != 0u) { if (!wroteSyncVar) { writer.WritePackedUInt64(base.syncVarDirtyBits); wroteSyncVar = true; } ListPlayerReaderWriter.WriteListPlayer(writer, game.players); // Player list } if ((base.syncVarDirtyBits & 2u) != 0u) { if (!wroteSyncVar) { writer.WritePackedUInt64(base.syncVarDirtyBits); wroteSyncVar = true; } BoardHandlerReaderWriter.WriteBoard(writer, game.boardHandler); // Game board } if ((base.syncVarDirtyBits & 4u) != 0u) { if (!wroteSyncVar) { writer.WritePackedUInt64(base.syncVarDirtyBits); wroteSyncVar = true; } writer.WriteInt32(recentRoll); // Recent roll } if ((base.syncVarDirtyBits & 8u) != 0u) { if (!wroteSyncVar) { writer.WritePackedUInt64(base.syncVarDirtyBits); wroteSyncVar = true; } writer.WriteInt32(turnIndex); // Turn index } if ((base.syncVarDirtyBits & 16u) != 0u) { if (!wroteSyncVar) { writer.WritePackedUInt64(base.syncVarDirtyBits); wroteSyncVar = true; } writer.WriteInt32(turnCount); // Turn count } if (!wroteSyncVar) { // write zero dirty bits if nothing changed writer.WritePackedUInt64(0u); } return(wroteSyncVar); }