예제 #1
0
        public void Draw(RenderComposer composer)
        {
            _rendered = 0;

            _drawMemory.Clear();
            var rect = new Rectangle(
                Engine.Renderer.Camera.ScreenToWorld(Vector2.Zero),
                Engine.Renderer.Camera.ScreenToWorld(Engine.Renderer.DrawBuffer.Size) * 2
                // Engine.Configuration.RenderSize * (Engine.Renderer.Scale - (Engine.Renderer.IntScale - 1)) / Engine.Renderer.Camera.Zoom
                );

            quadTree.GetObjects(rect, ref _drawMemory);
            composer.RenderOutline(new Vector3(rect.Position, 0f), rect.Size, Color.CornflowerBlue, 2);
            _rendered = _drawMemory.Count;

            Engine.Log.Info("\t" + "Mouse position \t" + Engine.Host.MousePosition, "TAAAG");
            // ReSharper disable once ForCanBeConvertedToForeach
            for (var i = 0; i < _drawMemory.Count; i++)
            {
                var tile = _drawMemory[i];

                var c = Color.White.ToUint();

                var a    = composer.GetBatch();
                var data = a.GetData(_tileTexture.Texture);
                data[0].Vertex = tile.Vertex0;
                data[0].Color  = c;
                data[0].UV     = Vector2.Zero;

                data[1].Vertex = tile.Vertex1;
                data[1].Color  = c;
                data[1].UV     = new Vector2(1, 0);

                data[2].Vertex = tile.Vertex2;
                data[2].Color  = c;
                data[2].UV     = new Vector2(1, 1);

                data[3].Vertex = tile.Vertex3;
                data[3].Color  = c;
                data[3].UV     = new Vector2(0, 1);
            }

            composer.SetDepthTest(false);
            composer.SetUseViewMatrix(false);
            composer.RenderLine(new Vector2(20, 20), new Vector2(20, 30), Color.Green, 2);
            composer.RenderLine(new Vector2(20, 20), new Vector2(30, 20), Color.Red, 2);
            composer.RenderLine(new Vector3(20, 20, 0), new Vector3(20, 20, 30), Color.Blue, 10);

            RenderGui(composer);
        }
예제 #2
0
        private void RenderGui(RenderComposer composer)
        {
            composer.SetUseViewMatrix(false);
            composer.SetDepthTest(false);

            ImGui.NewFrame();
            ImGui.Begin("InfoBox", ImGuiWindowFlags.AlwaysAutoResize);
            ImGui.Text("Camera " + Engine.Renderer.Camera.Position + " | @z: " + Engine.Renderer.Camera.Zoom);
            ImGui.Text("RenderTileCount [" + _rendered + "]");
            ImGui.End();

            composer.RenderToolsMenu(_menu);
            _menu.Render(composer);

            composer.RenderUI();
        }
예제 #3
0
        public static void RenderToolsMenu(this RenderComposer composer)
        {
            if (ToolsWindowManager == null)
            {
                ToolsWindowManager = new WindowManager();
            }

            composer.SetDepthTest(false);
            composer.SetUseViewMatrix(false);

            ToolsWindowManager.Update();

            ImGui.NewFrame();
            RenderToolsMenu(composer, ToolsWindowManager);
            ToolsWindowManager.Render(composer);
            composer.RenderUI();
        }
예제 #4
0
        protected override bool RenderInternal(RenderComposer c)
        {
            c.SetUseViewMatrix(false);
            c.SetDepthTest(false);

            ImGui.NewFrame();
            ImGui.BeginMainMenuBar();
            GetImGuiMetrics();

            ImGuiIOPtr io = ImGui.GetIO();

            _captureMouse    = io.WantCaptureMouse;
            _captureKeyboard = io.WantCaptureKeyboard;
            _captureText     = io.WantTextInput;

            var fullScreenEditorOpen = false;

            if (Children != null)
            {
                for (var i = 0; i < Children.Count; i++)
                {
                    UIBaseWindow child = Children[i];
                    if (child.Size == c.CurrentTarget.Size)
                    {
                        // todo: maybe something more explicit, like a bool in ImGuiWindow?
                        fullScreenEditorOpen = true;
                    }
                }
            }
            InputTransparent = !_captureMouse && !_captureKeyboard && !fullScreenEditorOpen;

            if (ImGui.BeginMenu("Audio"))
            {
                if (ImGui.MenuItem("Audio Preview"))
                {
                    AddLegacyWindow(new AudioMixer());
                }
                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Art"))
            {
                if (ImGui.MenuItem("Animation Editor"))
                {
                    AddLegacyWindow(new AnimationEditor());
                }
                if (ImGui.MenuItem("Animation Editor New (WIP)"))
                {
                    AddChild(new Animation2DEditor());
                }
                if (ImGui.MenuItem("Rogue Alpha Remover"))
                {
                    AddLegacyWindow(new RogueAlphaRemoval());
                }
                if (ImGui.MenuItem("Palette Editor"))
                {
                    AddLegacyWindow(new PaletteEditor());
                }
                if (ImGui.MenuItem("Font Preview"))
                {
                    AddLegacyWindow(new FontPreview());
                }
                if (ImGui.MenuItem("PNG Exporter"))
                {
                    AddLegacyWindow(new PngExporter());
                }
                if (ImGui.MenuItem("3D Object Viewer"))
                {
                    AddChild(new Viewer3D());
                }
                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Gameplay"))
            {
                if (ImGui.MenuItem("Map Editor"))
                {
                    AddChild(new MapEditor());
                }
                if (ImGui.MenuItem("Tmx Viewer"))
                {
                    AddChild(new TmxViewer());
                }
#if DEBUG
                if (ImGui.MenuItem("Collision Viewer"))
                {
                    AddLegacyWindow(new CollisionViewer());
                }
#else
                ImGui.MenuItem("Collision Viewer [Requires DEBUG]");
#endif
                if (ImGui.MenuItem("UI Editor"))
                {
                    AddChild(new UIEditorWindow());
                }
                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Engine"))
            {
                if (ImGui.MenuItem("Performance Monitor"))
                {
                    AddChild(new PerformanceMonitor());
                }
                if (ImGui.MenuItem("Memory Viewer"))
                {
                    AddLegacyWindow(new MemoryViewer());
                }
#if DEBUG
                if (ImGui.MenuItem("Coroutine Viewer"))
                {
                    AddLegacyWindow(new CoroutineViewer());
                }
#else
                ImGui.MenuItem("Coroutine Viewer [Requires DEBUG]");
#endif
                if (ImGui.MenuItem("Gpu Texture Viewer"))
                {
                    AddLegacyWindow(new GpuTextureViewer());
                }
                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Game"))
            {
                if (ImGui.MenuItem("Open Folder"))
                {
                    Process.Start("explorer.exe", ".");
                }

                foreach (KeyValuePair <string, Action <UIBaseWindow> > tool in ToolsManager.CustomToolsFactory)
                {
                    if (ImGui.MenuItem(tool.Key))
                    {
                        tool.Value(this);
                    }
                }

                ImGui.EndMenu();
            }

            ImGui.EndMainMenuBar();

            LegacyWindowManager.Update();
            LegacyWindowManager.Render(c);
            if (Children == null)
            {
                AfterRenderChildren(c);
            }
            return(true);
        }