From 32058ff15e3011748ca84ea2f5266d8a347f7956 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Thu, 29 Apr 2021 23:10:26 -0400 Subject: [PATCH] implement Magic Byte Offsets for DataFormatFilter --- Libraries/UniversalEditor.Core/DataFormatFilter.cs | 2 ++ .../DataFormats/UEPackage/UEPackageXMLDataFormat.cs | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Libraries/UniversalEditor.Core/DataFormatFilter.cs b/Libraries/UniversalEditor.Core/DataFormatFilter.cs index ee3e4e28..ec197ee4 100644 --- a/Libraries/UniversalEditor.Core/DataFormatFilter.cs +++ b/Libraries/UniversalEditor.Core/DataFormatFilter.cs @@ -50,6 +50,8 @@ namespace UniversalEditor { dff.FileNameFilters.Add(FileNameFilter); } + + dff.MagicByteOffsets = new int[MagicBytes.Length]; foreach (byte?[] magicBytes in MagicBytes) { dff.MagicBytes.Add(magicBytes); diff --git a/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs b/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs index 39ae30ed..cdb44672 100644 --- a/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs +++ b/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs @@ -1020,6 +1020,7 @@ namespace UniversalEditor.DataFormats.UEPackage MarkupTagElement tagMagicByteSequences = (tagFilter.Elements["MagicByteSequences"] as MarkupTagElement); if (tagMagicByteSequences != null) { + List magicByteOffsets = new List(); foreach (MarkupElement elMagicByteSequence in tagMagicByteSequences.Elements) { MarkupTagElement tagMagicByteSequence = (elMagicByteSequence as MarkupTagElement); @@ -1055,10 +1056,10 @@ namespace UniversalEditor.DataFormats.UEPackage } case "string": { - string value = tagMagicByte.Value; + byte[] value = System.Text.Encoding.ASCII.GetBytes(tagMagicByte.Value); for (int i = 0; i < value.Length; i++) { - magicByteSequence.Add((byte)value[i]); + magicByteSequence.Add(value[i]); } break; } @@ -1098,8 +1099,10 @@ namespace UniversalEditor.DataFormats.UEPackage } } + magicByteOffsets.Add(0); filter.MagicBytes.Add(magicByteSequence.ToArray()); } + filter.MagicByteOffsets = magicByteOffsets.ToArray(); } association.Filters.Add(filter);