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);
    }
示例#2
0
 public void SetDelayBottomMessage(string toolTip)
 {
     CancelInvoke("ClearDelayBottomMessage");
     m_ScriptTooltip = toolTip;
     NgUtil.LogMessage("ToolMessage - " + toolTip);
     Invoke("ClearDelayBottomMessage", m_fMessageTime);
 }
示例#3
0
    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);
    }
示例#4
0
    // 특정 prefab의 이름을 변경한다.
    public static void RenamePrefab(GameObject srcPrefab, string dstName)
    {
        string path = AssetDatabase.GetAssetPath(srcPrefab);

        NgUtil.LogMessage("RenamePrefab() - path - " + path);
        AssetDatabase.RenameAsset(path, dstName);
    }
示例#5
0
    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);
    }
示例#7
0
    // 특정 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);
    }
示例#8
0
    // 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);
    }
示例#12
0
    // 특정 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("");
        }
    }
示例#13
0
    // 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);
    }
示例#14
0
    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();
    }