public static GameObject SaveEffectPrefab(GameObject srcObject, GameObject tarPrefab) { NgUtil.LogMessage("SaveEffectPrefab() - " + tarPrefab); if (srcObject == null || tarPrefab == null) { Debug.LogError("SaveEffectPrefab arg is null"); return(null); } if (PrefabUtility.GetPrefabType(tarPrefab) == PrefabType.ModelPrefab) { FxmPopupManager.inst.ShowToolMessage("Can't save file, ModelPrefab"); return(null); } // PrefabUtility.ReconnectToLastPrefab(srcObject); Transform oldParent = srcObject.transform.parent; GameObject ret = PrefabUtility.ReplacePrefab(srcObject, tarPrefab, ReplacePrefabOptions.ConnectToPrefab); // EditorUtility.SetDirty(tarPrefab); // Destroy(srcObject); srcObject.transform.parent = oldParent; // AssetDatabase.SaveAssets(); AssetDatabaseSaveAssets(); return(ret); }
public void SetDelayBottomMessage(string toolTip) { CancelInvoke("ClearDelayBottomMessage"); m_ScriptTooltip = toolTip; NgUtil.LogMessage("ToolMessage - " + toolTip); Invoke("ClearDelayBottomMessage", m_fMessageTime); }
void SetActiveEffect(int nEffectIndex) { // current save if (FXMakerMain.inst.IsCurrentEffectObject()) { if (SaveProject()) { NgUtil.LogMessage(FXMakerTooltip.GetHsToolMessage("TOOL_AUTOSAVE", "")); } } // clear current FXMakerMain.inst.ClearCurrentEffectObject(m_CurrentEffectRoot, true); m_EditingName = ""; m_nEffectIndex = nEffectIndex; if (0 <= m_nEffectIndex && m_nEffectIndex < m_nEffectCount) { // Create to Hierarchy GameObject setPrefab = m_EffectPrefabs[m_nEffectIndex]; if (setPrefab != null) { m_EditingName = m_EffectPrefabs[m_nEffectIndex].name; SetCurrentEffectPrefab(setPrefab); } } else { m_nEffectIndex = -1; } // 付瘤阜 急琶沥焊 历厘 UnityEditor.EditorPrefs.SetInt("FXMakerEffect.m_nProjectIndex", m_nProjectIndex); UnityEditor.EditorPrefs.SetInt("FXMakerEffect.m_nGroupIndex", GetGroupIndex()); UnityEditor.EditorPrefs.SetInt("FXMakerEffect.m_nEffectIndex", m_nEffectIndex); }
// 특정 prefab의 이름을 변경한다. public static void RenamePrefab(GameObject srcPrefab, string dstName) { string path = AssetDatabase.GetAssetPath(srcPrefab); NgUtil.LogMessage("RenamePrefab() - path - " + path); AssetDatabase.RenameAsset(path, dstName); }
void NewPrefab(NEW_TYPE newType) { SaveProject(); GameObject newPrefab; switch (newType) { case NEW_TYPE.NEW_EMPTY: newPrefab = m_DefaultEmptyPrefab; break; case NEW_TYPE.NEW_PLANE: newPrefab = m_DefaultPlanePrefab; break; case NEW_TYPE.NEW_LEGACY: newPrefab = m_DefaultLegacyPrefab; break; case NEW_TYPE.NEW_SHURIKEN: newPrefab = m_DefaultShurikenPrefab; break; default: { NgUtil.LogMessage("NEW_TYPE error !!!"); return; } } string createPath = NgAsset.CreateDefaultUniquePrefab(newPrefab, GetCurrentDirPath() + "NewEffect.prefab"); SetChangePrefab(); SaveProject(); SelectToolbar(m_nProjectIndex, GetGroupIndex(), createPath); }
public bool SaveProject() { if (m_bChangePrefab == false) { return(false); } if (FXMakerMain.inst.GetOriginalEffectObject() == null || FXMakerMain.inst.GetOriginalEffectPrefab() == null) { return(false); } if (0 < IsReadOnlyFolder()) { NgUtil.LogMessage(FXMakerTooltip.GetHsToolMessage("READONLY_NOTSAVE", "")); } else { if (0 <= m_nEffectIndex && m_nEffectIndex < m_nEffectCount) { NgUtil.LogDevelop("SaveProject - FXMaker prefab"); m_EffectPrefabs[m_nEffectIndex] = FXMakerAsset.SaveEffectPrefab(FXMakerMain.inst.GetOriginalEffectObject(), FXMakerMain.inst.GetOriginalEffectPrefab()); // clear current FXMakerMain.inst.ClearCurrentEffectObject(m_CurrentEffectRoot, true); SetCurrentEffectPrefab(m_EffectPrefabs[m_nEffectIndex]); // Baground Reload FXMakerBackground.inst.UpdateBackground(); return(true); } } return(false); }
// 특정 prefab의 삭제한다. public static void DeletePrefab(GameObject srcPrefab) { string path = AssetDatabase.GetAssetPath(srcPrefab); NgUtil.LogMessage("DeletePrefab() - path - " + path); // PrefabUtility.SetPropertyModifications // AssetDatabase.DeleteAsset(path); AssetDatabase.MoveAssetToTrash(path); }
// ToolMessage window ----------------------------------------------------------------- public void ShowToolMessage(string msg) { if (m_ToolMessage == msg) { return; } CancelInvoke("HideToolMessage"); NgUtil.LogMessage("ToolMessage - " + msg); m_ToolMessage = msg; Invoke("HideToolMessage", m_fMessageTime * Time.timeScale); }
public static string CloneEffectPrefab(GameObject srcPrefab) { string createPath = NgAsset.ClonePrefab(srcPrefab); NgUtil.LogMessage("CloneEffectPrefab() - " + createPath); // copy preview image if (createPath != "") { string srcFile = NgFile.CombinePath(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.TEMPPREVIEWTEXTURE), NgAsset.GetPrefabThumbFilename(srcPrefab)); string tarFile = NgFile.CombinePath(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.TEMPPREVIEWTEXTURE), NgAsset.GetPrefabThumbFilename(createPath)); AssetDatabase.CopyAsset(srcFile, tarFile); AssetDatabaseRefresh(); } return(createPath); }
public static void DeleteEffectPrefab(GameObject tarPrefab) { // delete preview image string filename = NgFile.CombinePath(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.TEMPPREVIEWTEXTURE), NgAsset.GetPrefabThumbFilename(tarPrefab)); NgUtil.LogMessage("DeleteEffectPrefab() - delete preview - " + filename); AssetDatabase.MoveAssetToTrash(filename); // AssetDatabase.DeleteAsset(filename); // check clipboard FXMakerClipboard.inst.CheckDeletePrefab(tarPrefab); // delete prefab NgAsset.DeletePrefab(tarPrefab); AssetDatabaseRefresh(); AssetDatabaseSaveAssets(); }
// Prefab --------------------------------------------------------------------------------------------------------------- public static string CopyEffectPrefab(GameObject srcPrefab, string tarPath, bool bCutCopy) { NgUtil.LogMessage("CopyPrefab() - tarPath : " + tarPath); bool bCopy = false; string errstr = "err"; string srcPath = AssetDatabase.GetAssetPath(srcPrefab); tarPath = NgFile.CombinePath(tarPath, NgFile.GetFilenameExt(srcPath)); tarPath = AssetDatabase.GenerateUniqueAssetPath(tarPath); NgUtil.LogDevelop("CopyEffectPrefab() - tarPath : " + tarPath); // tarPath = AssetDatabase.ValidateMoveAsset(srcPath, tarPath); NgUtil.LogDevelop("CopyEffectPrefab() - src : " + srcPath); NgUtil.LogDevelop("CopyEffectPrefab() - tar : " + tarPath); if (bCutCopy) { errstr = AssetDatabase.MoveAsset(srcPath, tarPath); } else { bCopy = AssetDatabase.CopyAsset(srcPath, tarPath); } // copy preview image if (errstr == "" || bCopy == true) { string srcFile = NgFile.CombinePath(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.TEMPPREVIEWTEXTURE), NgAsset.GetPrefabThumbFilename(srcPrefab)); string tarFile = NgFile.CombinePath(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.TEMPPREVIEWTEXTURE), NgAsset.GetPrefabThumbFilename(tarPath)); if (bCutCopy) { AssetDatabase.MoveAsset(srcFile, tarFile); } else { AssetDatabase.CopyAsset(srcFile, tarFile); } } else { Debug.LogWarning("CopyEffectPrefab() - CopyPreview : Faild"); } AssetDatabaseRefresh(); AssetDatabaseSaveAssets(); return(tarPath); }
// 특정 prefab의 clone를 prjoect에 생성한다. public static string ClonePrefab(GameObject srcPrefab) { NgUtil.LogMessage("ClonePrefab() - srcPrefab - " + srcPrefab); string srcPath = AssetDatabase.GetAssetPath(srcPrefab); string UnqPath = AssetDatabase.GenerateUniqueAssetPath(srcPath); if (AssetDatabase.CopyAsset(srcPath, UnqPath)) { AssetDatabase.Refresh(); return(UnqPath); } else { Debug.LogWarning("Copy Error !!!"); return(""); } }
// DefaultPrefab을 이용해서 새로운 prefab 생성 public static string CreateDefaultUniquePrefab(GameObject srcPrefab, string dstPath) { NgUtil.LogMessage("CreateDefaultUniquePrefab() - dstPath - " + dstPath); string srcPath = AssetDatabase.GetAssetPath(srcPrefab); string UnqPath = AssetDatabase.GenerateUniqueAssetPath(dstPath); if (AssetDatabase.CopyAsset(srcPath, UnqPath)) { AssetDatabase.Refresh(); return(UnqPath); } else { Debug.LogWarning("Copy Error !!!"); return(""); } // EditorUtility.CreateEmptyPrefab(defaultPrefab); }
void SaveMaterial(Material addMat) { string path = ""; string newPath = ""; string uniquePath; Object existsObj; int nUniqueCount = 0; // Find Same Material if (m_bUniqueSave == false && m_SelectedTextureMaterials != null) { foreach (Material mat in m_SelectedTextureMaterials) { if (NgMaterial.IsSameMaterial(mat, addMat, false)) { NgUtil.LogMessage(FXMakerTooltip.GetHsToolMessage("MATERIAL_EXISTSAVED", "")); SetSelectedTransformMaterial(mat); return; } } } // Create Path bool bUseDefaultFolder = false; string devMatDir = "_MaterialsTool"; string userMatDir = "_MaterialsUser"; string matDir; if (FXMakerLayout.m_bDevelopState) { matDir = devMatDir; } else { matDir = userMatDir; } if ((addMat.mainTexture != null)) { path = AssetDatabase.GetAssetPath(addMat.mainTexture); if (path == "") { bUseDefaultFolder = true; } else { newPath = NgFile.CombinePath(NgFile.TrimFilenameExt(path), matDir); // Default SubDirectory if (NgAsset.ExistsDirectory(newPath) == false) { AssetDatabase.CreateFolder(NgFile.TrimFilenameExt(path), matDir); } } } else { newPath = NgFile.TrimFilenameExt(AssetDatabase.GetAssetPath(m_OriMaterial)); if (newPath == "") { bUseDefaultFolder = true; } else { string tmpPath = NgFile.TrimLastFolder(newPath); string tmpLast = NgFile.GetLastFolder(newPath); if (FXMakerLayout.m_bDevelopState) { if (tmpLast != devMatDir) { newPath = NgFile.CombinePath(tmpPath, devMatDir); if (NgAsset.ExistsDirectory(newPath) == false) { AssetDatabase.CreateFolder(tmpPath, matDir); } } } else { if (tmpLast != userMatDir) { newPath = NgFile.CombinePath(tmpPath, userMatDir); if (NgAsset.ExistsDirectory(newPath) == false) { AssetDatabase.CreateFolder(tmpPath, matDir); } } } } } if (bUseDefaultFolder) { path = FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.BACKGROUNDRESOURCES); newPath = NgFile.CombinePath(path, matDir); // Default SubDirectory if (NgAsset.ExistsDirectory(newPath) == false) { AssetDatabase.CreateFolder(path, matDir); } } // Unique Name string texname = addMat.name; if (addMat.mainTexture != null) { texname = addMat.mainTexture.name; } int nLoopCount = 0; while (true) { string matName = texname + (0 < nUniqueCount ? "_" + nUniqueCount.ToString() : "") + ".mat"; uniquePath = NgFile.CombinePath(newPath, matName); existsObj = AssetDatabase.LoadAssetAtPath(uniquePath, typeof(Material)); if (existsObj == null) { break; } nLoopCount++; nUniqueCount++; if (999 < nUniqueCount) { nUniqueCount = 1; } if (999 < nLoopCount) { Debug.LogError("Over Loop ----------------------"); return; } } AssetDatabase.CreateAsset(addMat, uniquePath); NgUtil.LogMessage(FXMakerTooltip.GetHsToolMessage("MATERIAL_NEWSAVED", "") + "\n" + uniquePath); FXMakerAsset.AssetDatabaseRefresh(); FXMakerAsset.AssetDatabaseSaveAssets(); }