public IEnumerator ImportModel() { PiXYZImportSettings settings = target as PiXYZImportSettings; GameObject gameObject = settings.gameObject; //Find the gameobject the script is attached to Vector3 eulerAngles = new Vector3() + gameObject.transform.rotation.eulerAngles; Vector3 scale = new Vector3() + gameObject.transform.lossyScale; if (gameObject.transform.childCount > 0) { foreach (Transform child in gameObject.transform) { DestroyImmediate(child.gameObject); } } UnityEngine.Object prefab; prefab = PrefabUtility.CreateEmptyPrefab("Assets/3DModels/" + settings.settings.prefabName + ".prefab"); loader = new PiXYZ4UnityLoader(); loader.setSourceCoordinatesSystem(settings.settings.isRightHanded, settings.settings.isZUp, settings.settings.scaleFactor); double mapUV3dSize = settings.settings.mapUV ? settings.settings.mapUV3dSize : -1; loader.configure(settings.settings.orient, mapUV3dSize, settings.settings.treeProcess, settings.settings.useLods ? settings.settings.lodsMode : LODsMode.NONE, settings.settings.lodSettings, !settings.settings.splitTo16BytesIndex, settings.settings.useMergeFinalAssemblies); CoroutineNode coco = coroutineScheduler.StartCoroutine(loader.loadFileRuntime(gameObject, settings.settings.originalFilename, true, prefab)); yield return(coco); PiXYZUtils.clearProgressBar(); if (loader.getErrorMessage().Length > 0) { Debug.LogError("PiXYZAssetImporter: loader.loadfile failed"); } else { Debug.Log("Success"); } #if UNITY_EDITOR foreach (UnityEngine.Object obj in loader.loadedObject) { AssetDatabase.AddObjectToAsset(obj, prefab); } #endif gameObject.transform.Rotate(-gameObject.transform.rotation.eulerAngles); gameObject.transform.Rotate(eulerAngles); gameObject.transform.localScale = scale; PrefabUtility.ReplacePrefab(gameObject, prefab, ReplacePrefabOptions.ConnectToPrefab); loader = null; }
public void OnImportClicked() { //Checks if Folder Assets/3DModels exist, otherwise create it if (!AssetDatabase.IsValidFolder("Assets/3DModels")) { AssetDatabase.CreateFolder("Assets", "3DModels"); } //Import CAD Model in Assets/PiXYZ/3DModels this.Close(); importing = true; loader = ScriptableObject.CreateInstance <PiXYZ4UnityLoader>(); coroutineScheduler.StartCoroutine(ImportModel(OnImportFinished)); }
public void OnImportFinished() { PiXYZUtils.clearProgressBar(); //Display success PopUp if (loader.getErrorMessage().Length > 0) { EditorUtility.DisplayDialog("PiXYZImporter", "File import failed.\n\nReasons : " + loader.getErrorMessage(), "ok"); } else { EditorUtility.DisplayDialog("PiXYZImporter", "File successfully imported in Scene.\nPrefab created in Assets/3DModels.", "ok"); } loader = null; frameSkip = 0; //window.Close(); DestroyImmediate(this); importing = false; isFileNameValid = false; }
public void OnApplyClicked() { PiXYZImportSettings importSettings = target as PiXYZImportSettings; //Checks if file is still present if (!System.IO.File.Exists(importSettings.settings.originalFilename)) { EditorUtility.DisplayDialog("PiXYZImporter", "Cannot reimport file.\n\nOriginal file " + Path.GetFileName(importSettings.settings.originalFilename) + " does not exist anymore in " + Path.GetDirectoryName(importSettings.settings.originalFilename), "ok"); return; } //Checks if Folder Assets/3DModels exist, otherwise create it if (!AssetDatabase.IsValidFolder("Assets/3DModels")) { AssetDatabase.CreateFolder("Assets", "3DModels"); } //Import CAD Model in Assets/PiXYZ/3DModels serializedObject.ApplyModifiedProperties(); loader = ScriptableObject.CreateInstance <PiXYZ4UnityLoader>(); importing = true; coroutineScheduler.StartCoroutine(ImportModel()); }
public void LoadCAD(bool p_IsLastOne, int p_Index, int meshQuality, float scale, bool zUp, bool rightHanded) { if (!CheckCADLoader()) { return; } isImporting = true; if (p_Index <= 1) { cadImportBeginTime = Time.realtimeSinceStartup; } if (ImportStarted != null) { ImportStarted(); } coroutineScheduler = ScriptableObject.CreateInstance <CoroutineScheduler>(); loader = ScriptableObject.CreateInstance <PiXYZ4UnityLoader>(); // LOAD CAD =============== coroutineScheduler.StartCoroutine(ImportModel(cadFileName, sceneRoot, p_IsLastOne, p_Index, meshQuality, scale, zUp, rightHanded)); }
IEnumerator ImportModel(string filePath, GameObject parentGameObject, bool p_IsLastOne, int p_Index, int meshQuality, float scale, bool zUp, bool rightHanded) { if (!File.Exists(filePath)) { Debug.Log("CAD FILE HAS BEEN DELETED " + filePath); } GameObject modelGameObject = new GameObject(Path.GetFileNameWithoutExtension(filePath)); modelGameObject.transform.parent = parentGameObject.transform; bool orient = true; float mapUV3dSize = 100.0f; int treeProcessType = 0; List <PiXYZLODSettings> lodSettingsList = new List <PiXYZLODSettings>(); lodSettingsList.Add(GetDefaultLODSettings(meshQuality)); loader.setSourceCoordinatesSystem(rightHanded, zUp, scale); loader.configure(orient, mapUV3dSize, (TreeProcessType)treeProcessType, LODsMode.NONE, lodSettingsList, true, true); yield return(null); CoroutineNode _routine = coroutineScheduler.StartCoroutine(loader.loadFileRuntime(modelGameObject, filePath, false, null)); yield return(_routine); while (!_routine.finished) { ; } loader = null; //add Unity Colliders to every GO that has a mesh //CreateUnityColliders(modelGameObject); //set the model as static by default modelGameObject.isStatic = true; isImporting = false; cadImportTiming = Time.realtimeSinceStartup - cadImportBeginTime; Bounds tmp = getSize(parentGameObject.transform.GetChild(0).gameObject); modelGameObject.transform.localPosition = new Vector3(0 - tmp.center.x, (0.5f - tmp.center.y) - (tmp.size.y / 2), 0 - tmp.center.z); if (ImportEnded != null && p_IsLastOne == true) { ImportEnded(); } Debug.Log("CAD loaded"); coroutineScheduler.StopAllCoroutines(); yield break; }