diff --git a/AssetStudio.GUI/MainForm.cs b/AssetStudio.GUI/MainForm.cs index f5b91fe..34282ec 100644 --- a/AssetStudio.GUI/MainForm.cs +++ b/AssetStudio.GUI/MainForm.cs @@ -18,7 +18,6 @@ using static AssetStudio.GUI.Studio; using OpenTK.Graphics; using OpenTK.Mathematics; -using Newtonsoft.Json.Converters; using System.Text.RegularExpressions; using OpenTK.Audio.OpenAL; @@ -870,12 +869,6 @@ private void PreviewAsset(AssetItem assetItem) break; default: var str = assetItem.Asset.Dump(); - if (Properties.Settings.Default.displayAll || string.IsNullOrEmpty(str)) - { - var settings = new JsonSerializerSettings(); - settings.Converters.Add(new StringEnumConverter()); - str = JsonConvert.SerializeObject(assetItem.Asset, Formatting.Indented, settings); - } if (str != null) { textPreviewBox.Text = str; diff --git a/AssetStudio.GUI/Studio.cs b/AssetStudio.GUI/Studio.cs index e10d8b0..fe746cf 100644 --- a/AssetStudio.GUI/Studio.cs +++ b/AssetStudio.GUI/Studio.cs @@ -1,4 +1,6 @@ -using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; @@ -935,6 +937,12 @@ public static string DumpAsset(Object obj) var type = MonoBehaviourToTypeTree(m_MonoBehaviour); str = m_MonoBehaviour.Dump(type); } + if (string.IsNullOrEmpty(str)) + { + var settings = new JsonSerializerSettings(); + settings.Converters.Add(new StringEnumConverter()); + str = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented, settings); + } return str; } diff --git a/AssetStudio/Classes/Mesh.cs b/AssetStudio/Classes/Mesh.cs index ecb5093..7ab0ba3 100644 --- a/AssetStudio/Classes/Mesh.cs +++ b/AssetStudio/Classes/Mesh.cs @@ -502,6 +502,8 @@ public sealed class Mesh : NamedObject private StreamingInfo m_StreamData; private bool m_CollisionMeshBaked = false; + public static bool HasVertexColorSkinning(SerializedType type) => type.Match("413A501B79022BF2DF389A82002FC81F"); + public List m_Indices = new List(); public Mesh(ObjectReader reader) : base(reader) @@ -579,6 +581,10 @@ public Mesh(ObjectReader reader) : base(reader) } var m_KeepVertices = reader.ReadBoolean(); var m_KeepIndices = reader.ReadBoolean(); + if (reader.Game.Type.IsBH3() && HasVertexColorSkinning(reader.serializedType)) + { + var m_VertexColorSkinning = reader.ReadBoolean(); + } if (reader.Game.Type.IsArknightsEndfield()) { var m_CollisionMeshOnly = reader.ReadBoolean(); @@ -587,7 +593,7 @@ public Mesh(ObjectReader reader) : base(reader) } } reader.AlignStream(); - if (reader.Game.Type.IsGISubGroup()) + if (reader.Game.Type.IsGISubGroup() || (reader.Game.Type.IsBH3() && HasVertexColorSkinning(reader.serializedType))) { var m_PackSkinDataToUV2UV3 = reader.ReadBoolean(); reader.AlignStream();