private IEnumerator Export(Model.Exporter exporter, string filename) { ProgressBar progress = new ProgressBar("Export", "Please wait during models export."); bool success = false; IEnumerator it = exporter.Export(rootObject, filename, s => success = s, percentage => progress.Update(percentage)); while (it.MoveNext()) { yield return(it.Current); } progress.Stop(); if (!success) { EditorUtility.DisplayDialog("Error", string.Format("Export to '{0}' failed.", filename), "OK"); } }
public void OnGUI() { if (exporter == null) { exporter = new Model.Exporter(); } if (fileSelector == null) { fileSelector = new NativeSaverEditor(); } GUILayout.BeginVertical(); GUILayout.Label("Select the root GameObject to export:"); rootObject = (GameObject)EditorGUILayout.ObjectField(rootObject, typeof(GameObject), true); if (rootObject != null) { saveAsPrefab = GUILayout.Toggle(saveAsPrefab, "Save as Prefab"); GUILayout.FlexibleSpace(); if (GUILayout.Button("Export")) { string path = fileSelector.Load(); string[] extensions_list = exporter.SupportedExtensions; for (int i = 0; i < extensions_list.Length; i++) { extensions_list[i] = extensions_list[i].Insert(0, "*."); } string extensions = string.Format(";{0}", string.Join(";", extensions_list)); if (saveAsPrefab) { extensions = "prefab"; } fileSelector.DisplaySelector(path, string.Format("{0}.{1}", rootObject.name, Constants.binaryExtension), extensions); if (fileSelector.Modified && fileSelector.HasFile()) { string file = fileSelector.First(); if (!string.IsNullOrEmpty(file)) { fileSelector.Save(); if (saveAsPrefab) { Tools.PrefabExporter prefab = new Tools.PrefabExporter(); prefab.Save(rootObject, file); } else { IEnumerator it = Export(exporter, file); while (it.MoveNext()) { ; } } } } } } GUILayout.EndVertical(); }