public static IEnumerator ImportDTURoutine(string path, Action <DTU> dtuOut, float progressLimit) { Debug.Log("ImportDTU for " + path); FoldAll(); ImportEventRecord record = new ImportEventRecord(); EventQueue.Enqueue(record); var dtu = DTUConverter.ParseDTUFile(path); dtuOut(dtu); var dtuObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(path); record.AddToken("Imported DTU file: " + path); record.AddToken(dtuObject.name, dtuObject, ENDLINE); //UnityEngine.Debug.Log("DTU: " + dtu.AssetName + " contains: " + dtu.Materials.Count + " materials"); record.AddToken("Generated materials: "); float progressIncrement = (progressLimit - Daz3DBridge.Progress) / dtu.Materials.Count; for (int i = 0; i < dtu.Materials.Count; i++) { var dtuMat = dtu.Materials[i]; var material = dtu.ConvertToUnity(dtuMat); _map.AddMaterial(material); record.AddToken(material.name, material); Daz3DBridge.Progress = Mathf.MoveTowards(Daz3DBridge.Progress, progressLimit, progressIncrement); yield return(new WaitForEndOfFrame()); } record.AddToken(" based on DTU file.", null, ENDLINE); Daz3DBridge bridge = EditorWindow.GetWindow(typeof(Daz3DBridge)) as Daz3DBridge; if (bridge == null) { var consoleType = Type.GetType("ConsoleWindow,UnityEditor.dll"); bridge = EditorWindow.CreateWindow <Daz3DBridge>(new[] { consoleType }); } bridge?.Focus(); //just a safeguard to keep the history data at a managable size (100 records) while (EventQueue.Count > 100) { EventQueue.Dequeue(); } yield break; }
public static void ImportDTU(string path) { Debug.Log("ImportDTU for " + path); FoldAll(); ImportEventRecord record = new ImportEventRecord(); EventQueue.Enqueue(record); var dtu = DTUConverter.ParseDTUFile(path); var dtuObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(path); record.AddToken("Imported DTU file: " + path); record.AddToken(dtuObject.name, dtuObject, ENDLINE); //UnityEngine.Debug.Log("DTU: " + dtu.AssetName + " contains: " + dtu.Materials.Count + " materials"); record.AddToken("Generated materials: "); foreach (var dtuMat in dtu.Materials) { var material = dtu.ConvertToUnity(dtuMat); _map.AddMaterial(material); record.AddToken(material.name, material); } record.AddToken(" based on DTU file.", null, ENDLINE); Daz3DBridge bridge = EditorWindow.GetWindow(typeof(Daz3DBridge)) as Daz3DBridge; if (bridge == null) { var consoleType = Type.GetType("ConsoleWindow,UnityEditor.dll"); bridge = EditorWindow.CreateWindow <Daz3DBridge>(new[] { consoleType }); } bridge?.Focus(); //just a safeguard to keep the history data at a managable size (100 records) while (EventQueue.Count > 100) { EventQueue.Dequeue(); } }
private void DrawCommands() { GUIStyle bigStyle = new GUIStyle(GUI.skin.button); bigStyle.fontSize = 14; bigStyle.normal.textColor = ThemedColor; bigStyle.padding = new RectOffset(24, 24, 12, 12); bigStyle.margin = new RectOffset(12, 12, 12, 12); if (CommandButton("Clear History", bigStyle)) { Daz3DDTUImporter.EmptyEventQueue(); } if (Daz3DDTUImporter.ValidateDTUSelected()) { var dtu = Selection.activeObject; //the button if (CommandButton("Create Unity Prefab from '" + dtu.name + ".dtu'", bigStyle)) { var dtuPath = AssetDatabase.GetAssetPath(dtu); var fbxPath = dtuPath.Replace(".dtu", ".fbx"); Daz3DDTUImporter.Import(dtuPath, fbxPath); } if (CommandButton("Extract Materials from '" + dtu.name + ".dtu'", bigStyle)) { DTUConverter.MenuItemConvert(); } } else { GUILayout.Space(12); GUILayout.Label("Select a DTU file in project window for more commands..."); } }