- [Core] Fix bug with parsing Mesh [BH3]

- [GUI] Moved option to show `JSON` to `Dump` tab when `TypeTree` is not avaliable.
This commit is contained in:
Razmoth
2024-02-01 19:10:38 +04:00
parent 87e87cf0ab
commit 9ad9230946
3 changed files with 16 additions and 9 deletions

View File

@@ -18,7 +18,6 @@ using System.Windows.Forms;
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 @@ namespace AssetStudio.GUI
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;

View File

@@ -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 @@ namespace AssetStudio.GUI
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;
}

View File

@@ -502,6 +502,8 @@ namespace AssetStudio
private StreamingInfo m_StreamData;
private bool m_CollisionMeshBaked = false;
public static bool HasVertexColorSkinning(SerializedType type) => type.Match("413A501B79022BF2DF389A82002FC81F");
public List<uint> m_Indices = new List<uint>();
public Mesh(ObjectReader reader) : base(reader)
@@ -579,6 +581,10 @@ namespace AssetStudio
}
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 @@ namespace AssetStudio
}
}
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();