Skip to content
This repository has been archived by the owner on May 11, 2024. It is now read-only.

Commit

Permalink
- [Core] Fix bug with parsing Mesh [BH3]
Browse files Browse the repository at this point in the history
- [GUI] Moved option to show `JSON` to `Dump` tab when `TypeTree` is not avaliable.
  • Loading branch information
Razmoth committed Feb 1, 2024
1 parent 87e87cf commit 9ad9230
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
7 changes: 0 additions & 7 deletions AssetStudio.GUI/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand Down
10 changes: 9 additions & 1 deletion AssetStudio.GUI/Studio.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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;
}

Expand Down
8 changes: 7 additions & 1 deletion AssetStudio/Classes/Mesh.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint> m_Indices = new List<uint>();

public Mesh(ObjectReader reader) : base(reader)
Expand Down Expand Up @@ -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();
Expand All @@ -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();
Expand Down

0 comments on commit 9ad9230

Please sign in to comment.