diff --git a/UAssetAPI.Tests/AssetUnitTests.cs b/UAssetAPI.Tests/AssetUnitTests.cs
index 2722f1b5..a9b28165 100644
--- a/UAssetAPI.Tests/AssetUnitTests.cs
+++ b/UAssetAPI.Tests/AssetUnitTests.cs
@@ -632,6 +632,18 @@ public void TestRepak()
}
}
+ ///
+ /// In this test, we parse a .usmap containing an OptionalProperty (as currently produced by Dumper-7) to verify compatibility.
+ ///
+ [TestMethod]
+ public void TestUsmapWithOptionalProperty()
+ {
+ var usmap = new Usmap(Path.Combine("TestAssets", "TestUE5_4", "BlankGame", "BlankGame_Dumper-7.usmap"));
+ Assert.AreEqual(31948, usmap.NameMap.Count);
+ Assert.AreEqual(1565, usmap.EnumMap.Count);
+ Assert.AreEqual(7657, usmap.Schemas.Count);
+ }
+
public static MemoryStream PathToStream(string p)
{
using (FileStream origStream = File.Open(p, FileMode.Open, new FileInfo(p).IsReadOnly ? FileAccess.Read : FileAccess.ReadWrite))
diff --git a/UAssetAPI.Tests/TestAssets/TestUE5_4/BlankGame/BlankGame_Dumper-7.usmap b/UAssetAPI.Tests/TestAssets/TestUE5_4/BlankGame/BlankGame_Dumper-7.usmap
new file mode 100644
index 00000000..7aa579b5
Binary files /dev/null and b/UAssetAPI.Tests/TestAssets/TestUE5_4/BlankGame/BlankGame_Dumper-7.usmap differ
diff --git a/UAssetAPI.Tests/UAssetAPI.Tests.csproj b/UAssetAPI.Tests/UAssetAPI.Tests.csproj
index 29edf08a..faf3dddb 100644
--- a/UAssetAPI.Tests/UAssetAPI.Tests.csproj
+++ b/UAssetAPI.Tests/UAssetAPI.Tests.csproj
@@ -443,5 +443,8 @@
Always
+
+ Always
+
\ No newline at end of file
diff --git a/UAssetAPI/Unversioned/Usmap.cs b/UAssetAPI/Unversioned/Usmap.cs
index b5e7df8a..ab63ff03 100644
--- a/UAssetAPI/Unversioned/Usmap.cs
+++ b/UAssetAPI/Unversioned/Usmap.cs
@@ -92,6 +92,9 @@ public enum EPropertyType
SetProperty,
EnumProperty,
FieldPathProperty,
+ OptionalProperty,
+ Utf8StrProperty,
+ AnsiStrProperty,
Unknown = 0xFF
};
@@ -906,6 +909,7 @@ private UsmapPropertyData InitPropData(EPropertyType typ)
return new UsmapStructData();
case EPropertyType.SetProperty:
case EPropertyType.ArrayProperty:
+ case EPropertyType.OptionalProperty:
return new UsmapArrayData(typ);
case EPropertyType.MapProperty:
return new UsmapMapData();
@@ -928,6 +932,7 @@ private UsmapPropertyData DeserializePropData(UsmapBinaryReader reader)
break;
case EPropertyType.SetProperty:
case EPropertyType.ArrayProperty:
+ case EPropertyType.OptionalProperty:
((UsmapArrayData)res).InnerType = DeserializePropData(reader);
break;
case EPropertyType.MapProperty: