private async Task Save() { mUVAnim.Save2Xnd(mCurrentResInfo.ResourceName); // Reference mCurrentResInfo.ReferenceRNameList.Clear(); mCurrentResInfo.ReferenceRNameList.Add(mUVAnim.TextureRName); mCurrentResInfo.ReferenceRNameList.Add(mUVAnim.MaterialInstanceRName); await mCurrentResInfo.Save(true); }
public async System.Threading.Tasks.Task SaveRefObjects(RName rn, string newname) { string src = rn.Address; string saveName = rn.Name; var rc = EngineNS.CEngine.Instance.RenderContext; foreach (var i in MeshAssets) { var mesh = await EngineNS.CEngine.Instance.MeshManager.CreateMeshAsync(rc, i, false, true); if (mesh == null) { continue; } rn.Name = newname; mesh.SaveMesh(i.Address + ".ren"); var resInfo = CMDEngine.CMDEngineInstance.mInfoManager.CreateResourceInfo("Mesh") as EditorCommon.ResourceInfos.MeshResourceInfo; if (resInfo != null) { resInfo.Load(i.Address + ".rinfo"); resInfo.RefreshReferenceRNames(mesh); } var t = resInfo.Save(i.Address + ".rinfo", false); rn.Name = saveName; } foreach (var i in UVAnimAssets) { var uvAnim = new EngineNS.UISystem.UVAnim(); if (false == await uvAnim.LoadUVAnimAsync(EngineNS.CEngine.Instance.RenderContext, i)) { continue; } rn.Name = newname; uvAnim.Save2Xnd(i.Address + ".ren"); var resInfo = CMDEngine.CMDEngineInstance.mInfoManager.CreateResourceInfo("UVAnim") as UVAnimEditor.UVAnimResourceInfo; if (resInfo != null) { resInfo.Load(i.Address + ".rinfo"); resInfo.RefreshReferenceRNames(uvAnim); } var t = resInfo.Save(i.Address + ".rinfo", false); rn.Name = saveName; } foreach (var i in MaterialAssets) { var mtlInst = await EngineNS.CEngine.Instance.MaterialManager.GetMaterialAsync(rc, rn); if (mtlInst == null) { continue; } rn.Name = newname; mtlInst.SaveMaterial(i.Address + ".ren"); var resInfo = CMDEngine.CMDEngineInstance.mInfoManager.CreateResourceInfo("Material") as MaterialEditor.ResourceInfos.MaterialResourceInfo; if (resInfo != null) { resInfo.Load(i.Address + ".rinfo"); resInfo.RefreshReferenceRNames(mtlInst); } var t = resInfo.Save(i.Address + ".rinfo", false); rn.Name = saveName; } foreach (var i in MaterialInstanceAssets) { var mtlInst = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, rn); if (mtlInst == null) { continue; } rn.Name = newname; mtlInst.SaveMaterialInstance(i.Address + ".ren"); var resInfo = CMDEngine.CMDEngineInstance.mInfoManager.CreateResourceInfo("MaterialInstance") as MaterialEditor.ResourceInfos.MaterialInstanceResourceInfo; if (resInfo != null) { resInfo.Load(i.Address + ".rinfo"); resInfo.RefreshReferenceRNames(mtlInst); } var t = resInfo.Save(i.Address + ".rinfo", false); rn.Name = saveName; } foreach (var i in MacrossAssets) { } foreach (var i in PrefabAssets) { var prefab = await CEngine.Instance.PrefabManager.GetPrefab(rc, i, false); if (prefab == null) { continue; } rn.Name = newname; prefab.SavePrefab(i.Address + ".ren"); var resInfo = CMDEngine.CMDEngineInstance.mInfoManager.CreateResourceInfo("Prefab") as EditorCommon.ResourceInfos.PrefabResourceInfo; if (resInfo != null) { resInfo.Load(i.Address + ".rinfo"); await resInfo.RefreshReferenceRNames(prefab); } var t = resInfo.Save(i.Address + ".rinfo", false); rn.Name = saveName; } FinishRefObjects(); rn.Name = newname; CEngine.Instance.FileManager.CopyFile(src, rn.Address, true, true); CEngine.Instance.FileManager.CopyFile(src + ".rinfo", rn.Address + ".rinfo", true, true); CEngine.Instance.FileManager.DeleteFile(src); if (CEngine.Instance.FileManager.FileExists(src + ".snap")) { CEngine.Instance.FileManager.DeleteFile(src + ".snap"); } CEngine.Instance.FileManager.DeleteFile(src + ".rinfo"); }