public override void Serialize(NetworkBinaryWriter writer, SerializationModeFlags mode) { #if NETWORK_PROFILING using (new NetworkProfilingScope(this)) #endif { base.Serialize(writer, mode); if ((mode & SerializationModeFlags.VaryingDataFromServer) != 0) { if (_hoverAroundPos.HasValue) writer.WriteHalf(_hoverAroundPos.Value); else writer.WriteHalf(new Vector2(float.NaN)); } } }
public override void Serialize(NetworkBinaryWriter writer, SerializationModeFlags mode) { #if NETWORK_PROFILING using (new NetworkProfilingScope(this)) #endif checked { // Note: Gob.{Pos,Rotation,Move,RotationSpeed} are computed from Host // and don't need to be serialized except at birth. var baseSerializationMode = mode.HasFlag(SerializationModeFlags.ConstantDataFromServer) ? mode : mode & ~SerializationModeFlags.VaryingDataFromServer; base.Serialize(writer, baseSerializationMode); if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer)) { var hostID = Host != null ? Host.ID : Gob.INVALID_ID; writer.Write((short)hostID); writer.Write((byte)HostBoneIndex); } if (mode.HasFlag(SerializationModeFlags.VaryingDataFromServer)) { writer.Write((byte)_wallPunchPosesForClient.Count); foreach (var wallPunchPos in _wallPunchPosesForClient) writer.WriteHalf(wallPunchPos); _wallPunchPosesForClient.Clear(); } } }