From 140a732046a0ca69e9340014dcd32f8b80b0e7e4 Mon Sep 17 00:00:00 2001 From: Perfare Date: Thu, 29 Mar 2018 01:29:51 +0800 Subject: [PATCH] Fixed #165 --- UnityStudio/Classes/Mesh.cs | 4 +++- UnityStudio/StudioClasses/AssetsFile.cs | 6 ++---- UnityStudio/StudioClasses/Importer.cs | 4 ++-- UnityStudio/UnityStudioForm.cs | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/UnityStudio/Classes/Mesh.cs b/UnityStudio/Classes/Mesh.cs index 59437d2..740b18b 100644 --- a/UnityStudio/Classes/Mesh.cs +++ b/UnityStudio/Classes/Mesh.cs @@ -469,8 +469,10 @@ namespace UnityStudio bool m_KeepIndices = reader.ReadBoolean(); } reader.AlignStream(4); + //This is a Unity bug fixed in 2017.3.1p1 and later versions if ((version[0] > 2017 || (version[0] == 2017 && version[1] >= 4)) || //2017.4 - ((version[0] == 2017 && version[1] == 3) && m_MeshCompression == 0))//2017.3 + ((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) && m_MeshCompression == 0))//2017.3.xfx with no compression { var m_IndexFormat = reader.ReadInt32(); } diff --git a/UnityStudio/StudioClasses/AssetsFile.cs b/UnityStudio/StudioClasses/AssetsFile.cs index 51e3092..54ed126 100644 --- a/UnityStudio/StudioClasses/AssetsFile.cs +++ b/UnityStudio/StudioClasses/AssetsFile.cs @@ -34,7 +34,6 @@ namespace UnityStudio private bool baseDefinitions; private List classIDs = new List();//use for 5.5.0 - public static string[] buildTypeSplit = { ".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; #region cmmon string private static Dictionary baseStrings = new Dictionary @@ -324,9 +323,8 @@ namespace UnityStudio } #endregion - buildType = m_Version.Split(buildTypeSplit, StringSplitOptions.RemoveEmptyEntries); - var strver = from Match m in Regex.Matches(m_Version, @"[0-9]") select m.Value; - version = Array.ConvertAll(strver.ToArray(), int.Parse); + buildType = Regex.Replace(m_Version, @"\d", "").Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries); + version = Regex.Matches(m_Version, @"\d").Cast().Select(m => int.Parse(m.Value)).ToArray(); if (version[0] == 2 && version[1] == 0 && version[2] == 1 && version[3] == 7)//2017.x { var nversion = new int[version.Length - 3]; diff --git a/UnityStudio/StudioClasses/Importer.cs b/UnityStudio/StudioClasses/Importer.cs index fcae9e0..c0a32e6 100644 --- a/UnityStudio/StudioClasses/Importer.cs +++ b/UnityStudio/StudioClasses/Importer.cs @@ -116,8 +116,8 @@ namespace UnityStudio { //make use of the bundle file version assetsFile.m_Version = bundleFile.versionEngine; - assetsFile.version = Array.ConvertAll((from Match m in Regex.Matches(assetsFile.m_Version, @"[0-9]") select m.Value).ToArray(), int.Parse); - assetsFile.buildType = bundleFile.versionEngine.Split(AssetsFile.buildTypeSplit, StringSplitOptions.RemoveEmptyEntries); + assetsFile.version = Regex.Matches(bundleFile.versionEngine, @"\d").Cast().Select(m => int.Parse(m.Value)).ToArray(); + assetsFile.buildType = Regex.Replace(bundleFile.versionEngine, @"\d", "").Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries); } assetsfileList.Add(assetsFile); diff --git a/UnityStudio/UnityStudioForm.cs b/UnityStudio/UnityStudioForm.cs index c07bde5..2c79c7b 100644 --- a/UnityStudio/UnityStudioForm.cs +++ b/UnityStudio/UnityStudioForm.cs @@ -1435,7 +1435,7 @@ namespace UnityStudio break; case "exportSelectedAssetsMenuItem": toExportAssets = new List(assetListView.SelectedIndices.Count); - foreach (var i in assetListView.SelectedIndices.OfType()) + foreach (int i in assetListView.SelectedIndices) { toExportAssets.Add((AssetPreloadData)assetListView.Items[i]); }