public static void WriteBlock(this GenericWriter writer, Action <GenericWriter> onSerialize) { /*using (var ms = new MemoryStream()) * { * GenericWriter w = ms.GetBinaryWriter(); * * VitaNexCore.TryCatch(onSerialize, w); * * w.Close(); * * WriteLongBytes(writer, ms.ToArray()); * }*/ long start = writer.Seek(0, SeekOrigin.Current); writer.Write(start); VitaNexCore.TryCatch(onSerialize, writer); long end = writer.Seek(0, SeekOrigin.Current); writer.Seek(start, SeekOrigin.Begin); writer.Write(end - start); writer.Seek(end, SeekOrigin.Begin); }
/// <summary> /// DO NOT USE IN ITEM, MOBILE OR GUILD SERIALIZATION /// </summary> public static void WriteBlock(this GenericWriter writer, Action <GenericWriter> onSerialize) { long start = writer.Seek(0, SeekOrigin.Current); writer.Write(start); VitaNexCore.TryCatch(() => onSerialize(writer), VitaNexCore.ToConsole); long end = writer.Seek(0, SeekOrigin.Current); writer.Seek(start, SeekOrigin.Begin); writer.Write(end - start); writer.Seek(end, SeekOrigin.Begin); }
/// <summary> /// DO NOT USE IN ITEM, MOBILE OR GUILD SERIALIZATION /// </summary> public static void WriteBytes(this GenericWriter writer, byte[] buffer, int offset, int count, out int length) { var start = (int)writer.Seek(0, SeekOrigin.Current); writer.Write(count); for (int i = offset; i >= 0 && i < (offset + count) && i < buffer.Length; i++) { writer.Write(buffer[i]); } var end = (int)writer.Seek(0, SeekOrigin.Current); length = (end - start); writer.Seek(start, SeekOrigin.Begin); writer.Write(length); writer.Seek(end, SeekOrigin.Begin); }
private static void WriteLength(GenericWriter idx, bool reset, long length, int count) { var index = idx.Seek(0, SeekOrigin.Current); idx.Seek(4, SeekOrigin.Begin); idx.Write(length); idx.Write(count); if (reset) { idx.Seek(index, SeekOrigin.Begin); } }