From 2249deefcbe5e5858229db2f8694623c69009036 Mon Sep 17 00:00:00 2001 From: Asval Date: Wed, 28 Aug 2024 17:18:37 +0200 Subject: [PATCH] implemented #158 --- CUE4Parse/UE4/Assets/Exports/UObject.cs | 3 +-- CUE4Parse/UE4/Assets/Objects/FPropertyTag.cs | 27 ++++++-------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/CUE4Parse/UE4/Assets/Exports/UObject.cs b/CUE4Parse/UE4/Assets/Exports/UObject.cs index 76e261098..b4c8452b8 100644 --- a/CUE4Parse/UE4/Assets/Exports/UObject.cs +++ b/CUE4Parse/UE4/Assets/Exports/UObject.cs @@ -341,10 +341,9 @@ protected internal virtual void WriteJson(JsonWriter writer, JsonSerializer seri writer.WriteStartObject(); foreach (var property in Properties) { - writer.WritePropertyName(property.Name.Text); + writer.WritePropertyName(property.ArrayIndex > 0 ? $"{property.Name.Text}[{property.ArrayIndex}]" : property.Name.Text); serializer.Serialize(writer, property.Tag); } - writer.WriteEndObject(); } diff --git a/CUE4Parse/UE4/Assets/Objects/FPropertyTag.cs b/CUE4Parse/UE4/Assets/Objects/FPropertyTag.cs index 95ef15ff6..0cbf54118 100644 --- a/CUE4Parse/UE4/Assets/Objects/FPropertyTag.cs +++ b/CUE4Parse/UE4/Assets/Objects/FPropertyTag.cs @@ -101,6 +101,7 @@ public FPropertyTag(FAssetArchive Ar, PropertyInfo info, ReadType type) TagData = new FPropertyTagData(info.MappingType); HasPropertyGuid = false; PropertyGuid = null; + PropertyTagFlags = info.ArraySize > 1 ? EPropertyTagFlags.HasArrayIndex : EPropertyTagFlags.None; var pos = Ar.Position; try @@ -143,17 +144,6 @@ public FPropertyTag(FAssetArchive Ar, bool readData) ArrayIndex = PropertyTagFlags.HasFlag(EPropertyTagFlags.HasArrayIndex) ? Ar.Read() : 0; HasPropertyGuid = PropertyTagFlags.HasFlag(EPropertyTagFlags.HasPropertyGuid); PropertyGuid = HasPropertyGuid ? Ar.Read() : null; - - if (PropertyTagFlags.HasFlag(EPropertyTagFlags.HasPropertyExtensions)) - { - var tagExtensions = Ar.Read(); - - if (tagExtensions.HasFlag(EPropertyTagExtension.OverridableInformation)) - { - var OverrideOperation = Ar.Read(); // EOverriddenPropertyOperation - var bExperimentalOverridableLogic = Ar.ReadBoolean(); - } - } } else { @@ -170,16 +160,15 @@ public FPropertyTag(FAssetArchive Ar, bool readData) PropertyGuid = Ar.Read(); } } + } - if (Ar.Ver >= EUnrealEngineObjectUE5Version.PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION) + if (Ar.Ver >= EUnrealEngineObjectUE5Version.PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION) + { + var tagExtensions = Ar.Read(); + if (tagExtensions.HasFlag(EPropertyTagExtension.OverridableInformation)) { - var tagExtensions = Ar.Read(); - - if (tagExtensions.HasFlag(EPropertyTagExtension.OverridableInformation)) - { - var OverrideOperation = Ar.Read(); // EOverriddenPropertyOperation - var bExperimentalOverridableLogic = Ar.ReadBoolean(); - } + var OverrideOperation = Ar.Read(); // EOverriddenPropertyOperation + var bExperimentalOverridableLogic = Ar.ReadBoolean(); } }