mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-26 13:50:21 -04:00
Fixed #218
This commit is contained in:
parent
453f6b6e36
commit
18275557df
@ -1013,7 +1013,7 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
var str = asset.Deserialize();
|
var str = asset.GetClassString();
|
||||||
if (str != null)
|
if (str != null)
|
||||||
{
|
{
|
||||||
textPreviewBox.Text = str;
|
textPreviewBox.Text = str;
|
||||||
|
@ -417,21 +417,19 @@ namespace AssetStudio
|
|||||||
return unpackedVectors;
|
return unpackedVectors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mesh(AssetPreloadData MeshPD, bool readSwitch)
|
public Mesh(AssetPreloadData preloadData, bool readSwitch)
|
||||||
{
|
{
|
||||||
//Stream = new EndianStream(File.OpenRead(sourceFile.filePath), sourceFile.endianType);
|
var version = preloadData.sourceFile.version;
|
||||||
//Stream.endian = sourceFile.endianType;
|
reader = preloadData.InitReader();
|
||||||
var version = MeshPD.sourceFile.version;
|
|
||||||
reader = MeshPD.InitReader();
|
|
||||||
|
|
||||||
bool m_Use16BitIndices = true; //3.5.0 and newer always uses 16bit indices
|
bool m_Use16BitIndices = true; //3.5.0 and newer always uses 16bit indices
|
||||||
uint m_MeshCompression = 0;
|
uint m_MeshCompression = 0;
|
||||||
|
|
||||||
if (MeshPD.sourceFile.platform == -2)
|
if (preloadData.sourceFile.platform == -2)
|
||||||
{
|
{
|
||||||
uint m_ObjectHideFlags = reader.ReadUInt32();
|
uint m_ObjectHideFlags = reader.ReadUInt32();
|
||||||
PPtr m_PrefabParentObject = MeshPD.sourceFile.ReadPPtr();
|
PPtr m_PrefabParentObject = preloadData.sourceFile.ReadPPtr();
|
||||||
PPtr m_PrefabInternal = MeshPD.sourceFile.ReadPPtr();
|
PPtr m_PrefabInternal = preloadData.sourceFile.ReadPPtr();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Name = reader.ReadAlignedString();
|
m_Name = reader.ReadAlignedString();
|
||||||
@ -490,8 +488,7 @@ namespace AssetStudio
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region BlendShapeData for 4.1.0 to 4.2.x, excluding 4.1.0 alpha
|
#region BlendShapeData for 4.1.0 to 4.2.x, excluding 4.1.0 alpha
|
||||||
if (version[0] == 4 && ((version[1] == 1 && MeshPD.sourceFile.buildType[0] != "a") ||
|
if (version[0] == 4 && ((version[1] == 1 && preloadData.sourceFile.buildType[0] != "a") || (version[1] > 1 && version[1] <= 2)))
|
||||||
(version[1] > 1 && version[1] <= 2)))
|
|
||||||
{
|
{
|
||||||
int m_Shapes_size = reader.ReadInt32();
|
int m_Shapes_size = reader.ReadInt32();
|
||||||
if (m_Shapes_size > 0)
|
if (m_Shapes_size > 0)
|
||||||
@ -547,17 +544,15 @@ namespace AssetStudio
|
|||||||
bool m_IsReadable = reader.ReadBoolean();
|
bool m_IsReadable = reader.ReadBoolean();
|
||||||
bool m_KeepVertices = reader.ReadBoolean();
|
bool m_KeepVertices = reader.ReadBoolean();
|
||||||
bool m_KeepIndices = reader.ReadBoolean();
|
bool m_KeepIndices = reader.ReadBoolean();
|
||||||
//TODO Need other ways to solve this problem
|
if (preloadData.HasStructMember("m_UsedForStaticMeshColliderOnly"))
|
||||||
/*if (version[0] == 5 && version[1] == 6 && version[2] == 4 &&
|
|
||||||
MeshPD.sourceFile.buildType[0] == "p")
|
|
||||||
{
|
{
|
||||||
var m_UsedForStaticMeshColliderOnly = reader.ReadBoolean();
|
var m_UsedForStaticMeshColliderOnly = reader.ReadBoolean();
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
reader.AlignStream(4);
|
reader.AlignStream(4);
|
||||||
//This is a bug fixed in 2017.3.1p1 and later versions
|
//This is a bug fixed in 2017.3.1p1 and later versions
|
||||||
if ((version[0] > 2017 || (version[0] == 2017 && version[1] >= 4)) || //2017.4
|
if ((version[0] > 2017 || (version[0] == 2017 && version[1] >= 4)) || //2017.4
|
||||||
((version[0] == 2017 && version[1] == 3 && version[2] == 1) && MeshPD.sourceFile.buildType[0] == "p") || //fixed after 2017.3.1px
|
((version[0] == 2017 && version[1] == 3 && version[2] == 1) && preloadData.sourceFile.buildType[0] == "p") || //fixed after 2017.3.1px
|
||||||
((version[0] == 2017 && version[1] == 3) && m_MeshCompression == 0))//2017.3.xfx with no compression
|
((version[0] == 2017 && version[1] == 3) && m_MeshCompression == 0))//2017.3.xfx with no compression
|
||||||
{
|
{
|
||||||
var m_IndexFormat = reader.ReadInt32();
|
var m_IndexFormat = reader.ReadInt32();
|
||||||
@ -1394,8 +1389,8 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MeshPD.extension = ".obj";
|
preloadData.extension = ".obj";
|
||||||
MeshPD.Text = m_Name;
|
preloadData.Text = m_Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ namespace AssetStudio
|
|||||||
var m_Name = reader.ReadAlignedString();
|
var m_Name = reader.ReadAlignedString();
|
||||||
if (readSwitch)
|
if (readSwitch)
|
||||||
{
|
{
|
||||||
if ((serializedText = preloadData.Deserialize()) == null)
|
if ((serializedText = preloadData.GetClassString()) == null)
|
||||||
{
|
{
|
||||||
var str = "PPtr<GameObject> m_GameObject\r\n";
|
var str = "PPtr<GameObject> m_GameObject\r\n";
|
||||||
str += "\tint m_FileID = " + m_GameObject.m_FileID + "\r\n";
|
str += "\tint m_FileID = " + m_GameObject.m_FileID + "\r\n";
|
||||||
|
@ -27,7 +27,7 @@ namespace AssetStudio
|
|||||||
var str = (string)ShaderResource.ResourceManager.GetObject($"Shader{sourceFile.version[0]}{sourceFile.version[1]}");
|
var str = (string)ShaderResource.ResourceManager.GetObject($"Shader{sourceFile.version[0]}{sourceFile.version[1]}");
|
||||||
if (str == null)
|
if (str == null)
|
||||||
{
|
{
|
||||||
str = preloadData.Deserialize();
|
str = preloadData.GetClassString();
|
||||||
if (str == null)
|
if (str == null)
|
||||||
m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read");
|
m_Script = Encoding.UTF8.GetBytes("Serialized Shader can't be read");
|
||||||
else
|
else
|
||||||
|
@ -69,7 +69,10 @@ namespace AssetStudio
|
|||||||
m_IsReadable = reader.ReadBoolean(); //2.6.0 and up
|
m_IsReadable = reader.ReadBoolean(); //2.6.0 and up
|
||||||
m_ReadAllowed = reader.ReadBoolean(); //3.0.0 - 5.4
|
m_ReadAllowed = reader.ReadBoolean(); //3.0.0 - 5.4
|
||||||
reader.AlignStream(4);
|
reader.AlignStream(4);
|
||||||
|
if (preloadData.HasStructMember("m_StreamingMipmapsPriority"))
|
||||||
|
{
|
||||||
|
var m_StreamingMipmapsPriority = reader.ReadInt32();
|
||||||
|
}
|
||||||
m_ImageCount = reader.ReadInt32();
|
m_ImageCount = reader.ReadInt32();
|
||||||
m_TextureDimension = reader.ReadInt32();
|
m_TextureDimension = reader.ReadInt32();
|
||||||
//m_TextureSettings
|
//m_TextureSettings
|
||||||
|
@ -31,7 +31,7 @@ namespace AssetStudio
|
|||||||
return reader;
|
return reader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Deserialize()
|
public string GetClassString()
|
||||||
{
|
{
|
||||||
var reader = InitReader();
|
var reader = InitReader();
|
||||||
if (sourceFile.ClassStructures.TryGetValue(Type1, out var classStructure))
|
if (sourceFile.ClassStructures.TryGetValue(Type1, out var classStructure))
|
||||||
@ -42,5 +42,10 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool HasStructMember(string name)
|
||||||
|
{
|
||||||
|
return sourceFile.ClassStructures.TryGetValue(Type1, out var classStructure) && classStructure.members.Any(x => x.Name == name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user