internal void UNetUpdate()
{
uint num = 0;
for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
{
int dirtyChannel = this.m_NetworkBehaviours[i].GetDirtyChannel();
if (dirtyChannel != -1)
{
num |= ((uint) 1) << dirtyChannel;
}
}
if (num != 0)
{
for (int j = 0; j < NetworkServer.numChannels; j++)
{
if ((num & (((int) 1) << j)) != 0)
{
s_UpdateWriter.StartMessage(8);
s_UpdateWriter.Write(this.netId);
bool flag = false;
for (int k = 0; k < this.m_NetworkBehaviours.Length; k++)
{
short position = s_UpdateWriter.Position;
NetworkBehaviour behaviour2 = this.m_NetworkBehaviours[k];
if (behaviour2.GetDirtyChannel() != j)
{
behaviour2.OnSerialize(s_UpdateWriter, false);
}
else
{
if (behaviour2.OnSerialize(s_UpdateWriter, false))
{
behaviour2.ClearAllDirtyBits();
NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Outgoing, 8, behaviour2.GetType().Name, 1);
flag = true;
}
if (((s_UpdateWriter.Position - position) > NetworkServer.maxPacketSize) && LogFilter.logWarn)
{
Debug.LogWarning(string.Concat(new object[] { "Large state update of ", s_UpdateWriter.Position - position, " bytes for netId:", this.netId, " from script:", behaviour2 }));
}
}
}
if (flag)
{
s_UpdateWriter.FinishMessage();
NetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j);
}
}
}
}
}