public static void ExportAssetsToGeoFiles(HEU_HoudiniAssetRoot[] rootAssets) { // Open a Dialog to get user settings: // -directory to write to // -file name with extension (determines file format) string exportExt = "bgeo.sc"; List <HEU_GeoNode> outputGeoNodes = new List <HEU_GeoNode>(); int numNodes = 0; int numAssets = rootAssets.Length; if (numAssets == 0) { return; } string exportDir = EditorSaveFolderPanel("Export Geo to Folder", HEU_PluginSettings.LastExportPath, ""); if (string.IsNullOrEmpty(exportDir)) { return; } // Save latest folder choice HEU_PluginSettings.LastExportPath = exportDir; if (string.IsNullOrEmpty(exportExt)) { Debug.LogErrorFormat("Export extension cannot be empty."); return; } if (!HEU_Platform.DoesDirectoryExist(exportDir) && HEU_Platform.CreateDirectory(exportDir)) { Debug.LogErrorFormat("Error creating directory at {0}.", exportDir); return; } for (int i = 0; i < numAssets; ++i) { if (rootAssets[i] != null && rootAssets[i]._houdiniAsset != null) { HEU_HoudiniAsset asset = rootAssets[i]._houdiniAsset; HEU_SessionBase session = asset.GetAssetSession(true); if (session == null || !session.IsSessionValid()) { continue; } if (string.IsNullOrEmpty(asset.AssetName)) { Debug.LogErrorFormat("Unable to export output of asset at {0} due to empty name.", asset.AssetPath); continue; } outputGeoNodes.Clear(); asset.GetOutputGeoNodes(outputGeoNodes); numNodes = outputGeoNodes.Count; for (int j = 0; j < numNodes; ++j) { string exportPath = string.Format("{0}/{1}_{2}.{3}", exportDir, asset.RootGameObject.name, outputGeoNodes[j].GeoName, exportExt); if (!session.SaveGeoToFile(outputGeoNodes[j].GeoID, exportPath)) { Debug.LogErrorFormat("Failed to export output geo of asset with path: {0}", exportPath); } else { Debug.LogFormat("Exported output geo {0} of {1} at: {2}", outputGeoNodes[j].GeoName, asset.RootGameObject.name, exportPath); } } } } }