예제 #1
0
        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);
        }
예제 #2
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");
        }