Esempio n. 1
0
 public void RefreshReferenceRNames(EngineNS.UISystem.UVAnim uvAnim)
 {
     // 资源引用
     ReferenceRNameList.Clear();
     ReferenceRNameList.Add(uvAnim.TextureRName);
     ReferenceRNameList.Add(uvAnim.MaterialInstanceRName);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
        }
Esempio n. 5
0
        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");
        }