diff --git a/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs b/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs index 0483e191ff..8e03dae00c 100644 --- a/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs +++ b/tools/unity-avatar-exporter/Assets/Editor/AvatarExporter.cs @@ -190,9 +190,13 @@ class AvatarExporter : MonoBehaviour { try { string[] lines = File.ReadAllLines(exportFstPath); foreach (string line in lines) { - if (line.StartsWith("name")) { - projectName = line.Substring(line.IndexOf("=") + 2); - break; + int separatorIndex = line.IndexOf("="); + if (separatorIndex >= 0) { + string key = line.Substring(0, separatorIndex).Trim(); + if (key == "name") { + projectName = line.Substring(separatorIndex + 1).Trim(); + break; + } } } } catch { @@ -201,17 +205,7 @@ class AvatarExporter : MonoBehaviour { return; } - // delete existing fst file since we will write a new file - // TODO: updating fst should only rewrite joint mappings and joint rotation offsets to existing file - try { - File.Delete(exportFstPath); - } catch { - EditorUtility.DisplayDialog("Error", "Failed to overwrite existing file " + exportFstPath + - ". Please check the file and try again.", "Ok"); - return; - } - - string exportModelPath = Path.GetDirectoryName(exportFstPath) + "/" + assetName + ".fbx"; + string exportModelPath = Path.GetDirectoryName(exportFstPath) + "\\" + assetName + ".fbx"; if (File.Exists(exportModelPath)) { // if the fbx in Unity Assets is newer than the fbx in the target export // folder or vice-versa then ask to replace the older fbx with the newer fbx @@ -234,13 +228,8 @@ class AvatarExporter : MonoBehaviour { if (option == 2) { // Cancel return; } else if (option == 0) { // Yes - copy model to Unity project - // delete existing fbx and associated meta file in Unity Assets - File.Delete(assetPath); - File.Delete(assetPath + ".meta"); - AssetDatabase.Refresh(); - - // copy the fbx from the project folder to Unity Assets and import it - File.Copy(exportModelPath, assetPath); + // copy the fbx from the project folder to Unity Assets, overwriting the existing fbx, and re-import it + File.Copy(exportModelPath, assetPath, true); AssetDatabase.ImportAsset(assetPath); // set model to Humanoid animation type and force another refresh on it to process Humanoid @@ -265,25 +254,26 @@ class AvatarExporter : MonoBehaviour { copyModelToExport = option == 0; // Yes } - // delete any existing fbx if we agreed to overwrite it, and copy asset fbx over + // copy asset fbx over deleting any existing fbx if we agreed to overwrite it if (copyModelToExport) { - if (File.Exists(exportModelPath)) { - try { - File.Delete(exportModelPath); - } catch { - EditorUtility.DisplayDialog("Error", "Failed to overwrite existing file " + exportModelPath + - ". Please check the file and try again.", "Ok"); - return; - } - } try { - File.Copy(assetPath, exportModelPath); + File.Copy(assetPath, exportModelPath, true); } catch { EditorUtility.DisplayDialog("Error", "Failed to copy existing file " + assetPath + " to " + exportModelPath + ". Please check the location and try again.", "Ok"); return; } } + + // delete existing fst file since we will write a new file + // TODO: updating fst should only rewrite joint mappings and joint rotation offsets to existing file + try { + File.Delete(exportFstPath); + } catch { + EditorUtility.DisplayDialog("Error", "Failed to overwrite existing file " + exportFstPath + + ". Please check the file and try again.", "Ok"); + return; + } // write out a new fst file in place of the old file WriteFST(exportFstPath, projectName); @@ -326,9 +316,6 @@ class AvatarExporter : MonoBehaviour { // instantiate a game object of the user avatar to save out bone parents then destroy it UnityEngine.Object avatarResource = AssetDatabase.LoadAssetAtPath(assetPath, typeof(UnityEngine.Object)); - if (!avatarResource) { - return false; - } GameObject assetGameObject = (GameObject)Instantiate(avatarResource); SetParentNames(assetGameObject.transform, userParentNames); DestroyImmediate(assetGameObject); diff --git a/tools/unity-avatar-exporter/avatarExporter.unitypackage b/tools/unity-avatar-exporter/avatarExporter.unitypackage index 9562dca380..953387223c 100644 Binary files a/tools/unity-avatar-exporter/avatarExporter.unitypackage and b/tools/unity-avatar-exporter/avatarExporter.unitypackage differ