Beispiel #1
0
 public static string GetClassName(EngineNS.RName rname)
 {
     return(rname.PureName());
 }
Beispiel #2
0
 public override string ToString()
 {
     return(MapRName.PureName());
 }
        protected override async Task <bool> MoveToFolderOverride(string absFolder, EngineNS.RName currentResourceName)
        {
            var tagRName = EngineNS.RName.EditorOnly_GetRNameFromAbsFile(absFolder + currentResourceName.PureName(true));
            var rc       = EngineNS.CEngine.Instance.RenderContext;

            if (EngineNS.CEngine.Instance.FileManager.FileExists(tagRName.Address))
            {
                if (EditorCommon.MessageBox.Show($"文件夹{absFolder}已存在文件{currentResourceName.PureName()},是否替换?") != EditorCommon.MessageBox.enMessageBoxResult.Yes)
                {
                    return(false);
                }
            }
            // var
            EngineNS.CEngine.Instance.FileManager.MoveFile(currentResourceName.Address + EngineNS.Graphics.CGfxMaterial.ShaderDefineExtension, tagRName.Address + EngineNS.Graphics.CGfxMaterial.ShaderDefineExtension);
            // code
            EngineNS.CEngine.Instance.FileManager.MoveFile(currentResourceName.Address + EngineNS.Graphics.CGfxMaterial.ShaderIncludeExtension, tagRName.Address + EngineNS.Graphics.CGfxMaterial.ShaderIncludeExtension);
            // link
            if (EngineNS.CEngine.Instance.FileManager.FileExists(currentResourceName.Address + EngineNS.Graphics.CGfxMaterial.ShaderLinkExtension))
            {
                EngineNS.CEngine.Instance.FileManager.MoveFile(currentResourceName.Address + EngineNS.Graphics.CGfxMaterial.ShaderLinkExtension, tagRName.Address + EngineNS.Graphics.CGfxMaterial.ShaderLinkExtension);
            }
            // snapshot
            if (EngineNS.CEngine.Instance.FileManager.FileExists(currentResourceName.Address + EditorCommon.Program.SnapshotExt))
            {
                EngineNS.CEngine.Instance.FileManager.MoveFile(currentResourceName.Address + EditorCommon.Program.SnapshotExt, tagRName.Address + EditorCommon.Program.SnapshotExt);
            }
            // material
            EngineNS.CEngine.Instance.FileManager.MoveFile(currentResourceName.Address, tagRName.Address);
            var mat = await EngineNS.CEngine.Instance.MaterialManager.GetMaterialAsync(rc, tagRName, true);

            mat.Name = tagRName;
            mat.SaveMaterial();

            // 刷新所有材质实例
            // 刷新所有打开的材质实例编辑器
            //var matInsFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.Content, "*" + EngineNS.CEngineDesc.MaterialInstanceExtension, System.IO.SearchOption.AllDirectories);
            //List<string> refreshedMatIns = new List<string>();
            //foreach (var ctrlData in EditorCommon.PluginAssist.Process.ControlsDic)
            //{
            //    if (ctrlData.Key.GetExtension() == EngineNS.CEngineDesc.MaterialInstanceExtension.TrimStart('.'))
            //    {
            //        var matIns = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, ctrlData.Key);
            //        if (matIns.Material.Name == currentResourceName)
            //        {
            //            EngineNS.CEngine.Instance.MaterialInstanceManager.RemoveMaterialFromDic(ctrlData.Key);
            //            var matInsEditor = ctrlData.Value.Content as MaterialInstanceEditorControl;
            //            var insResInfo = matInsEditor.CurrentContext.ResInfo as MaterialInstanceResourceInfo;
            //            insResInfo.ParentMaterialRName = tagRName;
            //            await insResInfo.Save();

            //            matIns.OnlySetMaterialName(tagRName);
            //            refreshedMatIns.Add(tagRName.Address);
            //            matIns.SaveMaterialInstance();
            //        }
            //    }
            //}
            //foreach(var file in matInsFiles)
            //{
            //    var relFile = EngineNS.CEngine.Instance.FileManager._GetRelativePathFromAbsPath(file, EngineNS.CEngine.Instance.FileManager.Content);
            //    var rName = EngineNS.CEngine.Instance.FileManager.GetRName(relFile);
            //    if (refreshedMatIns.Contains(rName.Address))
            //        continue;

            //    var rInfo = await EditorCommon.Resources.ResourceInfoManager.Instance.CreateResourceInfoFromResource(rName.Address) as ResourceInfos.MaterialInstanceResourceInfo;
            //    await rInfo.Load(rName.Address + EditorCommon.Program.ResourceInfoExt);
            //    if (rInfo.ParentMaterialRName == currentResourceName)
            //    {
            //        rInfo.ParentMaterialRName = tagRName;
            //        await rInfo.Save();

            //        var matIns = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, rName);
            //        EngineNS.CEngine.Instance.MaterialInstanceManager.RemoveMaterialFromDic(rName);
            //        matIns.OnlySetMaterialName(tagRName);
            //        //matIns.Editor_SetMaterial(mat);
            //        matIns.SaveMaterialInstance();
            //    }
            //}

            return(true);
        }