public void RefreshReferenceRNames(EngineNS.UISystem.UVAnim uvAnim) { // 资源引用 ReferenceRNameList.Clear(); ReferenceRNameList.Add(uvAnim.TextureRName); ReferenceRNameList.Add(uvAnim.MaterialInstanceRName); }
public override async Task <bool> AssetsOption_LoadResourceOverride(EditorCommon.Assets.AssetsPakage.LoadResourceData data) { var uvAnim = new EngineNS.UISystem.UVAnim(); if (false == await uvAnim.LoadUVAnimAsync(EngineNS.CEngine.Instance.RenderContext, data.RNameMapper.Name)) { return(false); } data.RNameMapper.ResObject = uvAnim; return(true); }
public async System.Threading.Tasks.Task FreshRInfo(string subDir, string[] resTypes) { var gmsFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.ProjectContent + subDir, "*.gms", System.IO.SearchOption.AllDirectories); var rc = EngineNS.CEngine.Instance.RenderContext; if (resTypes.Contains("gms")) { foreach (var i in gmsFiles) { bool error; var sf = EngineNS.CEngine.Instance.FileManager.NormalizePath(i, out error); sf = sf.Substring(EngineNS.CEngine.Instance.FileManager.ProjectContent.Length); var rn = EngineNS.RName.GetRName(sf); var mesh = await EngineNS.CEngine.Instance.MeshManager.CreateMeshAsync(rc, rn, false, true); //mesh.SaveMesh(i); var resInfo = mInfoManager.CreateResourceInfo("Mesh") as EditorCommon.ResourceInfos.MeshResourceInfo; resInfo.Load(i + ".rinfo"); resInfo.RefreshReferenceRNames(mesh); var t = resInfo.Save(i + ".rinfo", false); } } if (resTypes.Contains("instmtl")) { gmsFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.ProjectContent + subDir, "*.instmtl", System.IO.SearchOption.AllDirectories); foreach (var i in gmsFiles) { bool error; var sf = EngineNS.CEngine.Instance.FileManager.NormalizePath(i, out error); sf = sf.Substring(EngineNS.CEngine.Instance.FileManager.ProjectContent.Length); var rn = EngineNS.RName.GetRName(sf); var mtlInst = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, rn); if (mtlInst == null) { continue; } //mesh.SaveMesh(i); var resInfo = mInfoManager.CreateResourceInfo("MaterialInstance") as MaterialEditor.ResourceInfos.MaterialInstanceResourceInfo; resInfo.Load(i + ".rinfo"); resInfo.RefreshReferenceRNames(mtlInst); var t = resInfo.Save(i + ".rinfo", false); } } if (resTypes.Contains("material")) { gmsFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.ProjectContent + subDir, "*.material", System.IO.SearchOption.AllDirectories); foreach (var i in gmsFiles) { bool error; var sf = EngineNS.CEngine.Instance.FileManager.NormalizePath(i, out error); sf = sf.Substring(EngineNS.CEngine.Instance.FileManager.ProjectContent.Length); var rn = EngineNS.RName.GetRName(sf); var mtlInst = await EngineNS.CEngine.Instance.MaterialManager.GetMaterialAsync(rc, rn); if (mtlInst == null) { continue; } //mesh.SaveMesh(i); var resInfo = mInfoManager.CreateResourceInfo("Material") as MaterialEditor.ResourceInfos.MaterialResourceInfo; resInfo.Load(i + ".rinfo"); resInfo.RefreshReferenceRNames(mtlInst); var t = resInfo.Save(i + ".rinfo", false); } } if (resTypes.Contains("uvanim")) { gmsFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.ProjectContent + subDir, "*.uvanim", System.IO.SearchOption.AllDirectories); foreach (var i in gmsFiles) { bool error; var sf = EngineNS.CEngine.Instance.FileManager.NormalizePath(i, out error); sf = sf.Substring(EngineNS.CEngine.Instance.FileManager.ProjectContent.Length); var rn = EngineNS.RName.GetRName(sf); var uvAnim = new EngineNS.UISystem.UVAnim(); if (false == await uvAnim.LoadUVAnimAsync(EngineNS.CEngine.Instance.RenderContext, rn)) { continue; } var resInfo = mInfoManager.CreateResourceInfo("UVAnim") as UVAnimEditor.UVAnimResourceInfo; resInfo.Load(i + ".rinfo"); resInfo.RefreshReferenceRNames(uvAnim); var t = resInfo.Save(i + ".rinfo", false); } } if (resTypes.Contains("macross")) { FreshMacrossRInfo(subDir); } }
public async Task SetUVAnim(EngineNS.UISystem.UVAnim uvAnim) { mUVAnim = uvAnim; if (mUVAnim != null) { foreach (var rect in mUsedRectangleList) { ImageCanvas.Children.Remove(rect); } foreach (var text in mUsedTextBlockList) { ImageCanvas.Children.Remove(text); } //SetImageFile(mUVAnim.Texture); BindingOperations.ClearBinding(this, TextureFileProperty); TextureFile = mUVAnim.TextureRName; BindingOperations.SetBinding(this, TextureFileProperty, new Binding("TextureRName") { Source = mUVAnim, Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); if (mTextureLoadSemaphore != null) { await mTextureLoadSemaphore.Await(); } //if (mUVAnim.TextureObject != null) { mUsedRectangleList.Clear(); mUsedTextBlockList.Clear(); int i = 0; foreach (var frame in mUVAnim.Frames) { Rectangle rect = new Rectangle() { Stroke = System.Windows.Media.Brushes.Yellow, StrokeDashArray = new DoubleCollection(new Double[] { 2, 1 }), Width = Image_Pic.Width * frame.SizeU, Height = Image_Pic.Height * frame.SizeV, IsHitTestVisible = false }; double left = Image_Pic.Width * frame.U; double top = Image_Pic.Height * frame.V; Canvas.SetLeft(rect, left); Canvas.SetTop(rect, top); TextBlock text = new TextBlock() { Background = new SolidColorBrush(Color.FromArgb(120, 0, 0, 0)), Text = MainControl.KeyFrameWord + i, IsHitTestVisible = false, RenderTransform = new ScaleTransform(), }; Canvas.SetLeft(text, left); Canvas.SetTop(text, top); mUsedRectangleList.Add(rect); mUsedTextBlockList.Add(text); ImageCanvas.Children.Add(rect); ImageCanvas.Children.Add(text); i++; } } } Grid_SelectRect.Visibility = System.Windows.Visibility.Collapsed; }
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"); }