Esempio n. 1
0
            public static void GetSetData(MutagenFrame frame, IANavigationMeshInternal item)
            {
                var parentBytes = frame.GetSpan(
                    amount: 8,
                    offset: 8,
                    readSafe: true);

                switch (item)
                {
                case IWorldspaceNavigationMesh worldspace:
                {
                    var ret = WorldspaceNavigationMeshData.CreateFromBinary(frame);
                    ret.Parent      = FormKeyBinaryTranslation.Instance.Parse(parentBytes.Slice(0, 4), frame.MetaData.MasterReferences !);
                    ret.Coordinates = new P2Int16(
                        BinaryPrimitives.ReadInt16LittleEndian(parentBytes.Slice(4)),
                        BinaryPrimitives.ReadInt16LittleEndian(parentBytes.Slice(6)));
                    worldspace.Data = ret;
                }
                break;

                case ICellNavigationMesh cell:
                {
                    var ret = CellNavigationMeshData.CreateFromBinary(frame);
                    ret.UnusedWorldspaceParent = FormKeyBinaryTranslation.Instance.Parse(parentBytes.Slice(0, 4), frame.MetaData.MasterReferences !);
                    ret.Parent = FormKeyBinaryTranslation.Instance.Parse(parentBytes.Slice(4, 4), frame.MetaData.MasterReferences !);
                    cell.Data  = ret;
                }
                break;

                default:
                    throw new NotImplementedException();
                }
            }
Esempio n. 2
0
            static partial void FillBinaryLengthLogicCustom(MutagenFrame frame, IANavigationMeshInternal item)
            {
                frame.Position += frame.MetaData.Constants.SubConstants.HeaderLength;
                var xxxxSize = frame.ReadInt32();

                HeaderTranslation.ReadNextSubrecordType(frame, out var len);
                frame = frame.SpawnWithLength(xxxxSize, checkFraming: false);
                GetSetData(frame, item);
            }
Esempio n. 3
0
 static partial void FillBinaryDataLogicCustom(MutagenFrame frame, IANavigationMeshInternal item)
 {
     HeaderTranslation.ReadNextSubrecordType(frame, out var len);
     frame = frame.SpawnWithLength(len);
     GetSetData(frame, item);
 }