diff --git a/CUE4Parse b/CUE4Parse
index e69ae897..ffd48e77 160000
--- a/CUE4Parse
+++ b/CUE4Parse
@@ -1 +1 @@
-Subproject commit e69ae897396941b4daca9d26fb7ac5524c667dd2
+Subproject commit ffd48e7719e374580a74414785cdfc36e55c12dc
diff --git a/FModel/Creator/Bases/FN/BaseIcon.cs b/FModel/Creator/Bases/FN/BaseIcon.cs
index cd57824c..5b79b834 100644
--- a/FModel/Creator/Bases/FN/BaseIcon.cs
+++ b/FModel/Creator/Bases/FN/BaseIcon.cs
@@ -32,6 +32,7 @@ public class BaseIcon : UCreator
// rarity
if (Object.TryGetValue(out FPackageIndex series, "Series")) GetSeries(series);
else if (Object.TryGetValue(out FStructFallback componentContainer, "ComponentContainer")) GetSeries(componentContainer);
+ else if (Object.TryGetValue(out EFortRarity hackRarity, "HackRarity")) GetRarity(hackRarity);
else GetRarity(Object.GetOrDefault("Rarity", EFortRarity.Uncommon)); // default is uncommon
if (Object.TryGetValue(out FInstancedStruct[] dataList, "DataList"))
@@ -48,7 +49,7 @@ public class BaseIcon : UCreator
Preview = preview;
else if (Object.TryGetValue(out FPackageIndex itemDefinition, "HeroDefinition", "WeaponDefinition"))
Preview = Utils.GetBitmap(itemDefinition);
- else if (Object.TryGetValue(out FSoftObjectPath largePreview, "LargePreviewImage", "EntryListIcon", "SmallPreviewImage", "BundleImage", "ItemDisplayAsset", "LargeIcon", "ToastIcon", "SmallIcon"))
+ else if (Object.TryGetValue(out FSoftObjectPath largePreview, "LargePreviewImage", "EntryListIcon", "SmallPreviewImage", "BundleImage", "ItemDisplayAsset", "LargeIcon", "ToastIcon", "SmallIcon", "CartridgeIcon", "EffectIcon"))
Preview = Utils.GetBitmap(largePreview);
else if (Object.TryGetValue(out string s, "LargePreviewImage") && !string.IsNullOrEmpty(s))
Preview = Utils.GetBitmap(s);
@@ -66,9 +67,9 @@ public class BaseIcon : UCreator
}
// text
- if (Object.TryGetValue(out FText displayName, "DisplayName", "ItemName", "BundleName", "DefaultHeaderText", "UIDisplayName", "EntryName", "EventCalloutTitle"))
+ if (Object.TryGetValue(out FText displayName, "DisplayName", "ItemName", "BundleName", "DefaultHeaderText", "UIDisplayName", "EntryName", "EventCalloutTitle", "KeyName", "HackDisplayName"))
DisplayName = displayName.Text;
- if (Object.TryGetValue(out FText description, "Description", "ItemDescription", "SetDescription", "BundleDescription", "GeneralDescription", "DefaultBodyText", "UIDescription", "UIDisplayDescription", "EntryDescription", "EventCalloutDescription"))
+ if (Object.TryGetValue(out FText description, "Description", "ItemDescription", "SetDescription", "BundleDescription", "GeneralDescription", "DefaultBodyText", "UIDescription", "UIDisplayDescription", "EntryDescription", "EventCalloutDescription", "KeyDescription", "HackDescription"))
Description = description.Text;
else if (Object.TryGetValue(out FText[] descriptions, "Description"))
Description = string.Join('\n', descriptions.Select(x => x.Text));
diff --git a/FModel/Creator/CreatorPackage.cs b/FModel/Creator/CreatorPackage.cs
index 82f81427..aea95e5f 100644
--- a/FModel/Creator/CreatorPackage.cs
+++ b/FModel/Creator/CreatorPackage.cs
@@ -65,6 +65,7 @@ public class CreatorPackage : IDisposable
case "AthenaEmojiItemDefinition":
case "AthenaItemWrapDefinition":
case "AthenaToyItemDefinition":
+ case "FortHackData":
case "FortHeroType":
case "FortTokenType":
case "FortAbilityKit":
@@ -72,7 +73,9 @@ public class CreatorPackage : IDisposable
case "FortMissionInfo":
case "RewardGraphToken":
case "JunoKnowledgeBundle":
+ case "FortHackDataMinimal":
case "FortBannerTokenType":
+ case "FortHackKeyCoreData":
case "FortVariantTokenType":
case "FortDecoItemDefinition":
case "FortStatItemDefinition":
@@ -88,6 +91,7 @@ public class CreatorPackage : IDisposable
case "SparksBassItemDefinition":
case "FortGadgetItemDefinition":
case "AthenaCharmItemDefinition":
+ case "FortHackKeyItemDefinition":
case "FortPlaysetItemDefinition":
case "FortGiftBoxItemDefinition":
case "FortOutpostItemDefinition":
@@ -124,6 +128,7 @@ public class CreatorPackage : IDisposable
case "JunoRecipeBundleItemDefinition":
case "FortHomebaseNodeItemDefinition":
case "FortNeverPersistItemDefinition":
+ case "FortHackCartridgeItemDefinition":
case "FortPlayerAugmentItemDefinition":
case "FortSmartBuildingItemDefinition":
case "FortGiftBoxUnlockItemDefinition":
diff --git a/FModel/Enums.cs b/FModel/Enums.cs
index 24de8230..6d599d95 100644
--- a/FModel/Enums.cs
+++ b/FModel/Enums.cs
@@ -131,6 +131,7 @@ public enum EAssetCategory : uint
CustomizableObject = Mesh + 3,
NaniteDisplacedMesh = Mesh + 4,
GeometryCollection = Mesh + 5,
+ ChaosClothAsset = Mesh + 6,
Texture = AssetCategoryExtensions.CategoryBase + (3 << 16),
Materials = AssetCategoryExtensions.CategoryBase + (4 << 16),
Material = Materials + 1,
@@ -167,6 +168,15 @@ public enum EAssetCategory : uint
DeltaForce = GameSpecific + 4,
LegoBatman = GameSpecific + 5,
ArcSys = GameSpecific + 6,
+ GothamKnights = GameSpecific + 7,
+}
+
+public enum EAssetFamily
+{
+ None,
+ Criware,
+ Wwise,
+ FMod,
}
public enum EUnluacMode
diff --git a/FModel/Extensions/VisualTreeExtensions.cs b/FModel/Extensions/VisualTreeExtensions.cs
index c898336f..1a54a808 100644
--- a/FModel/Extensions/VisualTreeExtensions.cs
+++ b/FModel/Extensions/VisualTreeExtensions.cs
@@ -11,7 +11,9 @@ public static class VisualTreeExtensions
{
if (current is T t)
return t;
- current = VisualTreeHelper.GetParent(current);
+ current = current is FrameworkContentElement contentElement
+ ? contentElement.Parent
+ : VisualTreeHelper.GetParent(current);
}
return null;
}
diff --git a/FModel/MainWindow.xaml b/FModel/MainWindow.xaml
index e70d5552..706f3755 100644
--- a/FModel/MainWindow.xaml
+++ b/FModel/MainWindow.xaml
@@ -820,6 +820,33 @@
+
+
+