Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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]);
                }
            }
        }
Beispiel #4
0
        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);
 }