mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
SkinnedMeshRenderer fix for Unity 5
sharedFiles properly linked
This commit is contained in:
parent
66fa804819
commit
a928ffbf92
@ -334,10 +334,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
|
||||||
if (m_Name == "holotable_glow_mesh")
|
|
||||||
{
|
|
||||||
bool stop = true;
|
|
||||||
}
|
|
||||||
if (version[0] < 3 || (version[0] == 3 && version[1] < 5))
|
if (version[0] < 3 || (version[0] == 3 && version[1] < 5))
|
||||||
{
|
{
|
||||||
m_Use16BitIndices = a_Stream.ReadBoolean();
|
m_Use16BitIndices = a_Stream.ReadBoolean();
|
||||||
|
@ -34,7 +34,7 @@ namespace Unity_Studio
|
|||||||
if (sourceFile.version[0] < 5)
|
if (sourceFile.version[0] < 5)
|
||||||
{
|
{
|
||||||
m_Enabled = a_Stream.ReadBoolean();
|
m_Enabled = a_Stream.ReadBoolean();
|
||||||
m_CastShadows = a_Stream.ReadByte();
|
m_CastShadows = a_Stream.ReadByte();//bool
|
||||||
m_ReceiveShadows = a_Stream.ReadBoolean();
|
m_ReceiveShadows = a_Stream.ReadBoolean();
|
||||||
m_LightmapIndex = a_Stream.ReadByte();
|
m_LightmapIndex = a_Stream.ReadByte();
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ namespace Unity_Studio
|
|||||||
a_Stream.Position += m_SubsetIndices_size * 4;
|
a_Stream.Position += m_SubsetIndices_size * 4;
|
||||||
PPtr m_StaticBatchRoot = sourceFile.ReadPPtr();
|
PPtr m_StaticBatchRoot = sourceFile.ReadPPtr();
|
||||||
|
|
||||||
if ((version[0] == 3 && version[1] >= 5) || version[0] >= 4)
|
if (version[0] >= 4 || (version[0] == 3 && version[1] >= 5))
|
||||||
{
|
{
|
||||||
bool m_UseLightProbes = a_Stream.ReadBoolean();
|
bool m_UseLightProbes = a_Stream.ReadBoolean();
|
||||||
a_Stream.Position += 3; //alignment
|
a_Stream.Position += 3; //alignment
|
||||||
@ -75,10 +75,11 @@ namespace Unity_Studio
|
|||||||
PPtr m_LightProbeAnchor = sourceFile.ReadPPtr();
|
PPtr m_LightProbeAnchor = sourceFile.ReadPPtr();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version[0] >= 4 && version[1] >= 3)
|
if (version[0] >= 5 || (version[0] == 4 && version[1] >= 3))
|
||||||
{
|
{
|
||||||
if (version[1] >= 5) { int m_SortingLayer = a_Stream.ReadInt32(); }
|
if (version[0] == 4 && version[1] <= 3) { int m_SortingLayer = a_Stream.ReadInt16(); }
|
||||||
else { int m_SortingLayer = a_Stream.ReadInt16(); }
|
else { int m_SortingLayer = a_Stream.ReadInt32(); }
|
||||||
|
|
||||||
int m_SortingOrder = a_Stream.ReadInt16();
|
int m_SortingOrder = a_Stream.ReadInt16();
|
||||||
a_Stream.AlignStream(4);
|
a_Stream.AlignStream(4);
|
||||||
}
|
}
|
||||||
@ -97,7 +98,7 @@ namespace Unity_Studio
|
|||||||
|
|
||||||
m_Mesh = sourceFile.ReadPPtr();
|
m_Mesh = sourceFile.ReadPPtr();
|
||||||
|
|
||||||
int m_Bones_size = a_Stream.ReadInt32();
|
/*int m_Bones_size = a_Stream.ReadInt32();
|
||||||
for (int b = 0; b < m_Bones_size; b++)
|
for (int b = 0; b < m_Bones_size; b++)
|
||||||
{
|
{
|
||||||
PPtr aBone = sourceFile.ReadPPtr();
|
PPtr aBone = sourceFile.ReadPPtr();
|
||||||
@ -118,7 +119,7 @@ namespace Unity_Studio
|
|||||||
float[] m_Center = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
float[] m_Center = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
||||||
float[] m_Extent = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
float[] m_Extent = new float[] { a_Stream.ReadSingle(), a_Stream.ReadSingle(), a_Stream.ReadSingle() };
|
||||||
bool m_DirtyAABB = a_Stream.ReadBoolean();
|
bool m_DirtyAABB = a_Stream.ReadBoolean();
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,10 +83,11 @@ namespace Unity_Studio
|
|||||||
progressBar1.Value = 0;
|
progressBar1.Value = 0;
|
||||||
progressBar1.Maximum = unityFiles.Count;
|
progressBar1.Maximum = unityFiles.Count;
|
||||||
|
|
||||||
foreach (var filename in openFileDialog1.FileNames)
|
//use a for loop because list size can change
|
||||||
|
for (int f = 0; f < unityFiles.Count; f++)
|
||||||
{
|
{
|
||||||
StatusStripUpdate("Loading " + Path.GetFileName(filename));
|
StatusStripUpdate("Loading " + Path.GetFileName(unityFiles[f]));
|
||||||
LoadAssetsFile(filename);
|
LoadAssetsFile(unityFiles[f]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -240,9 +241,7 @@ namespace Unity_Studio
|
|||||||
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
||||||
{
|
{
|
||||||
string sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFile.fileName;
|
string sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFile.fileName;
|
||||||
|
string sharedFileName = Path.GetFileName(sharedFile.fileName);
|
||||||
//TODO add extra code to search for the shared file in case it doesn't exist in the main folder
|
|
||||||
//or if it exists or the path is incorrect
|
|
||||||
|
|
||||||
//var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath == sharedFilePath);
|
//var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath == sharedFilePath);
|
||||||
/*var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath.EndsWith(Path.GetFileName(sharedFile.fileName)));
|
/*var loadedSharedFile = assetsfileList.Find(aFile => aFile.filePath.EndsWith(Path.GetFileName(sharedFile.fileName)));
|
||||||
@ -255,12 +254,23 @@ namespace Unity_Studio
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
//searching in unityFiles would preserve desired order, but...
|
//searching in unityFiles would preserve desired order, but...
|
||||||
var quedSharedFile = unityFiles.Find(uFile => uFile.EndsWith(Path.GetFileName(sharedFile.fileName)));
|
var quedSharedFile = unityFiles.Find(uFile => String.Equals(Path.GetFileName(uFile), sharedFileName, StringComparison.OrdinalIgnoreCase));
|
||||||
if (quedSharedFile == null && File.Exists(sharedFilePath))
|
if (quedSharedFile == null)
|
||||||
{
|
{
|
||||||
sharedFile.Index = unityFiles.Count;//this would get screwed if the file fails to load
|
//if (!File.Exists(sharedFilePath)) { sharedFilePath = Path.GetDirectoryName(fileName) + "\\" + sharedFileName; }
|
||||||
unityFiles.Add(sharedFilePath);
|
if (!File.Exists(sharedFilePath))
|
||||||
progressBar1.Maximum++;
|
{
|
||||||
|
var findFiles = Directory.GetFiles(Path.GetDirectoryName(fileName), sharedFileName, SearchOption.AllDirectories);
|
||||||
|
if (findFiles.Length > 0) { sharedFilePath = findFiles[0]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(sharedFilePath))
|
||||||
|
{
|
||||||
|
//this would get screwed if the file somehow fails to load
|
||||||
|
sharedFile.Index = unityFiles.Count;
|
||||||
|
unityFiles.Add(sharedFilePath);
|
||||||
|
progressBar1.Maximum++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { sharedFile.Index = unityFiles.IndexOf(quedSharedFile); }
|
else { sharedFile.Index = unityFiles.IndexOf(quedSharedFile); }
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user