private static void Write(Stream stream, IEnumerable <IAreaDataCommand> commands) { foreach (var command in commands) { using var commandStream = new MemoryStream(); Mapping.WriteObject(commandStream, command); var opcode = (short)_typeId[command.GetType()]; var parameterCount = (short)(commandStream.Length / 4); stream.Write(opcode); stream.Write(parameterCount); commandStream.SetPosition(0).CopyTo(stream); } }
public static void AssertReadAndWrite <T>(IBinaryMapping mapper, T value, int expectedLength, Action <ValuePair <T> > assertion = null) { var expected = new Generic <T> { Value = value }; var actual = new Generic <T>(); var memory = new MemoryStream(); mapper.WriteObject(memory, expected); Assert.Equal(expectedLength, memory.Length); memory.Position = 0; mapper.ReadObject(memory, actual); Assert.Equal(expectedLength, memory.Position); if (assertion != null) { assertion(new ValuePair <T> { Expected = value, Actual = actual.Value }); } else { Assert.Equal(expected.Value, actual.Value); } }
public static void Write(Stream stream, Pmo pmo) { stream.Position = 0; WriteHeaderData(stream, pmo); WriteMeshData(stream, pmo); WriteTextureData(stream, pmo); WriteTextureOffsets(stream, pmo); if (pmo.boneList != null && pmo.boneList.Length > 0) { stream.Seek(0, SeekOrigin.End); pmo.header.SkeletonOffset = (uint)stream.Position; stream.Seek(0xC, SeekOrigin.Begin); stream.Write(pmo.header.SkeletonOffset); stream.Seek(0, SeekOrigin.End); stream.Seek(pmo.header.SkeletonOffset, SeekOrigin.Begin); Mapping.WriteObject <SkeletonHeader>(stream, pmo.skeletonHeader); for (int joint = 0; joint < pmo.boneList.Length; joint++) { Mapping.WriteObject <BoneData>(stream, pmo.boneList[joint]); } } }
public static void Write(Stream stream, IEnumerable <IEventEntry> eventSet) { foreach (var item in eventSet) { var startPosition = stream.Position; stream.Position += 4; Mapping.WriteObject(stream, item); var nextPosition = stream.AlignPosition(2).Position; var id = _typeId[item.GetType()]; var length = stream.Position - startPosition; stream.Position = startPosition; stream.Write((short)(length)); stream.Write((short)id); stream.Position = nextPosition; } stream.Write(Terminator); }
public static void Write <TSavePersona5>(Stream stream, TSavePersona5 save) where TSavePersona5 : class, ISavePersona5 { Mapper.WriteObject(stream.FromBegin(), save); }