public async Task SetObjectToEdit(EngineNS.CRenderContext rc, EditorCommon.Resources.ResourceEditorContext context)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            Macross_Client.CurrentResourceInfo = HostControl.CurrentResInfo;
            await Macross_Client.Load();
        }
Ejemplo n.º 2
0
        public async System.Threading.Tasks.Task SetObjectToEdit(EditorCommon.Resources.ResourceEditorContext context)
        {
            SetBinding(TitleProperty, new Binding("ResourceName")
            {
                Source = context.ResInfo, Converter = new EditorCommon.Converter.RNameConverter_PureName()
            });

            // ResInfo 可能在不同的线程生成的,所以这里强制读取一下文件
            CurrentResourceInfo = await EditorCommon.Resources.ResourceInfoManager.Instance.CreateResourceInfoFromFile(context.ResInfo.AbsInfoFileName, context.ResInfo.ParentBrowser) as Macross.ResourceInfos.MacrossResourceInfo;

            var mclaInfo = CurrentResourceInfo as ResourceInfos.McBehaviorTreeResourceInfo;

            UpdateUndoRedoKey();
            var att = EngineNS.Rtti.AttributeHelper.GetCustomAttribute(CurrentResourceInfo.BaseType, typeof(EngineNS.Editor.Editor_MacrossClassAttribute).FullName, false);

            if (att != null)
            {
                var csType = (EngineNS.ECSType)EngineNS.Rtti.AttributeHelper.GetCustomAttributePropertyValue(att, "CSType");
                switch (csType)
                {
                case EngineNS.ECSType.Common:
                {
                    CommonVisible = Visibility.Collapsed;
                    ClientVisible = Visibility.Visible;
                    ServerVisible = Visibility.Visible;
                    CCSShowIdx    = 1;
                    Macross_Common.CurrentResourceInfo = mclaInfo;
                    Macross_Client.CurrentResourceInfo = mclaInfo;
                    Macross_Server.CurrentResourceInfo = mclaInfo;
                }
                break;

                case EngineNS.ECSType.Client:
                {
                    CommonVisible = Visibility.Collapsed;
                    ClientVisible = Visibility.Visible;
                    ServerVisible = Visibility.Collapsed;
                    CCSShowIdx    = 1;
                    Macross_Client.CurrentResourceInfo = mclaInfo;
                }
                break;

                case EngineNS.ECSType.Server:
                {
                    CommonVisible = Visibility.Collapsed;
                    ClientVisible = Visibility.Collapsed;
                    ServerVisible = Visibility.Visible;
                    CCSShowIdx    = 2;
                    Macross_Server.CurrentResourceInfo = mclaInfo;
                }
                break;
                }
            }

            await Load();
        }
Ejemplo n.º 3
0
        // 重新生成Macross代码文件
        async Task ReGenerateCodes()
        {
            var mExt = new List <string>()
            {
                "*" + EngineNS.CEngineDesc.MacrossExtension, "*.animmacross", "*.componentmacross"
            };
            List <string> files = new List <string>();

            foreach (var ext in mExt)
            {
                var partFiles = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.ProjectContent, ext + EditorCommon.Program.ResourceInfoExt, System.IO.SearchOption.AllDirectories);
                files.AddRange(partFiles);
            }
            foreach (var file in files)
            {
                if (file.Contains(""))
                {
                    System.Diagnostics.Debug.WriteLine($"-----{file}");
                }
                try
                {
                    var resInfo = await EditorCommon.Resources.ResourceInfoManager.Instance.CreateResourceInfoFromFile(file, null) as ResourceInfos.MacrossResourceInfo;

                    var context = new EditorCommon.Resources.ResourceEditorContext(PluginName, resInfo);
                    await SetObjectToEdit(context);

                    var codeStr = await mCodeGenerator.GenerateCode(CurrentResourceInfo, Macross_Client);

                    if (!EngineNS.CEngine.Instance.FileManager.DirectoryExists(CurrentResourceInfo.ResourceName.Address))
                    {
                        EngineNS.CEngine.Instance.FileManager.CreateDirectory(CurrentResourceInfo.ResourceName.Address);
                    }
                    var codeFile = $"{CurrentResourceInfo.ResourceName.Address}/{CurrentResourceInfo.ResourceName.PureName()}_{Macross_Client.CSType.ToString()}.cs";
                    using (var fs = new System.IO.FileStream(codeFile, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite))
                    {
                        fs.Write(System.Text.Encoding.Default.GetBytes(codeStr), 0, Encoding.Default.GetByteCount(codeStr));
                    }

                    //await CompileCode(EPlatformType.PLATFORM_WIN);
                }
                catch (System.Exception e)
                {
                    System.Diagnostics.Debug.WriteLine($"异常:{file} " + e.ToString());
                }
            }
            await mCodeGenerator.GenerateAndSaveMacrossCollector(Macross_Client.CSType);

            List <string> macrossfiles = mCodeGenerator.CollectionMacrossProjectFiles(Macross_Client.CSType);

            mCodeGenerator.GenerateMacrossProject(macrossfiles.ToArray(), Macross_Client.CSType);
        }
Ejemplo n.º 4
0
 public static async System.Threading.Tasks.Task OpenEditor(EditorCommon.Resources.ResourceEditorContext context)
 {
     await PluginAssist.Process.OnOpenEditor(context);
 }
Ejemplo n.º 5
0
        public async Task SetObjectToEditor(EngineNS.CRenderContext rc, EditorCommon.Resources.ResourceEditorContext context)
        {
            await Viewport.WaitInitComplated();

            if (mWindowRectUIShow == null)
            {
                var imgInit = new EngineNS.UISystem.Controls.ImageInitializer();
                imgInit.ImageBrush.ImageName = EngineNS.RName.GetRName("uieditor/uvanim_dottedline.uvanim", EngineNS.RName.enRNameType.Editor);
                imgInit.ImageBrush.TileMode  = EngineNS.UISystem.Brush.enTileMode.Both;
                mWindowRectUIShow            = new EngineNS.UISystem.Controls.Image();
                await mWindowRectUIShow.Initialize(rc, imgInit);
            }
            if (mMousePointAtUIRectShow == null)
            {
                var imgInit = new EngineNS.UISystem.Controls.ImageInitializer();
                imgInit.ImageBrush.ImageName = EngineNS.RName.GetRName("uieditor/uva_pointatrect.uvanim", EngineNS.RName.enRNameType.Editor);
                imgInit.ImageBrush.TileMode  = EngineNS.UISystem.Brush.enTileMode.None;
                mMousePointAtUIRectShow      = new EngineNS.UISystem.Controls.Image();
                await mMousePointAtUIRectShow.Initialize(rc, imgInit);

                mMousePointAtUIRectShow.Visibility = EngineNS.UISystem.Visibility.Collapsed;
            }
            if (mGridlineImage2D == null)
            {
                mGridlineImage2D = await EngineNS.Graphics.Mesh.CGfxImage2D.CreateImage2D(rc, EngineNS.RName.GetRName("uieditor/mi_background_grid.instmtl", EngineNS.RName.enRNameType.Editor), 0, 0, 0, 1, 1);

                mGridlineImage2D.RenderMatrix = EngineNS.Matrix.Scaling(Viewport.GetViewPortWidth(), Viewport.GetViewPortHeight(), 1);
            }
            await InitPanelRectsShow();

            var font = EngineNS.CEngine.Instance.FontManager.GetFont(EngineNS.CEngine.Instance.Desc.DefaultFont, 12, 1024, 128);

            if (mScaleFontMesh == null)
            {
                var mtl = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, EngineNS.RName.GetRName("Material/font.instmtl"));

                mScaleFontMesh = new EngineNS.Bricks.FreeTypeFont.CFontMesh();
                await mScaleFontMesh.SetMaterial(rc, mtl, "txDiffuse");

                mScaleFontMesh.RenderMatrix = EngineNS.Matrix.Translate(20, 20, 0);
                //mScaleFontMesh.Offset = new EngineNS.Vector2(20, 20);
                //mScaleFontMesh.Scale = new EngineNS.Vector2(1, 1);
            }

            //var color = new EngineNS.FrameBufferClearColor();
            //color.r = 0.1f;
            //color.g = 0.1f;
            //color.b = 0.1f;
            //color.a = 1.0f;
            //Viewport.RPolicy.SetClearColorRT(0, ref color);
            var smp = EngineNS.Thread.ASyncSemaphore.CreateSemaphore(1);

            Viewport.RPolicy.OnDrawUI += (cmd, view) =>
            {
                var mtlmesh = mGridlineImage2D.Mesh.MtlMeshArray[0];
                var pass    = mGridlineImage2D.GetPass();
                pass.ViewPort = view.Viewport;
                if (pass.RenderPipeline == null)
                {
                    var rplDesc = new EngineNS.CRenderPipelineDesc();
                    pass.RenderPipeline = rc.CreateRenderPipeline(rplDesc);
                }
                pass.RenderPipeline.RasterizerState   = mtlmesh.MtlInst.CustomRasterizerState;
                pass.RenderPipeline.DepthStencilState = mtlmesh.MtlInst.CustomDepthStencilState;
                pass.RenderPipeline.BlendState        = mtlmesh.MtlInst.CustomBlendState;
                //pass.ShaderSamplerBinder = mtlmesh.GetSamplerBinder(rc, pass.Effect.ShaderProgram);
                pass.BindCBuffer(pass.Effect.ShaderProgram, pass.Effect.CacheData.CBID_View, view.ScreenViewCB);
                pass.ShadingEnv.BindResources(mGridlineImage2D.Mesh, pass);
                cmd.PushPass(pass);

                mWindowRectUIShow.Draw(rc, cmd, view);

                foreach (var rect in mPanelRectsShow.Values)
                {
                    rect.Draw(rc, cmd, view);
                }

                HostDesignPanel.CurrentUI.Draw(rc, cmd, view);
                mMousePointAtUIRectShow.Draw(rc, cmd, view);
                foreach (var data in mSelectedUIDatas.Values)
                {
                    data.ShowRect?.Draw(rc, cmd, view);
                }
                mSlotOperator?.Draw(rc, cmd, view);
                mScaleFontMesh.DrawText(rc, font, "缩放:" + mUIScale.ToString("F"), true);
                for (int i = 0; i < mScaleFontMesh.PassNum; i++)
                {
                    var fontPass = mScaleFontMesh.GetPass(i);
                    if (fontPass == null)
                    {
                        continue;
                    }

                    fontPass.ViewPort = view.Viewport;
                    fontPass.BindCBuffer(fontPass.Effect.ShaderProgram, fontPass.Effect.CacheData.CBID_View, view.ScreenViewCB);
                    fontPass.ShadingEnv.BindResources(mScaleFontMesh.Mesh, fontPass);
                    cmd.PushPass(fontPass);
                }

                if (smp.IsValid)
                {
                    smp.Release();
                }
            };
            await smp.Await();

            HostDesignPanel.CurrentUI.SetDesignRect(ref mWindowDesignSize);
            ShowAll();
        }