예제 #1
0
        public DeveloperModeView(Game game)
        {
            _game = game;

            var window = game.Window;

            _imGuiRenderer = AddDisposable(new ImGuiRenderer(
                                               window.GraphicsDevice,
                                               window.GraphicsDevice.MainSwapchain.Framebuffer.OutputDescription,
                                               window.ClientBounds.Width,
                                               window.ClientBounds.Height));

            void OnWindowSizeChanged(object sender, EventArgs e)
            {
                _imGuiRenderer.WindowResized(window.ClientBounds.Width, window.ClientBounds.Height);
            }

            window.ClientSizeChanged += OnWindowSizeChanged;

            AddDisposeAction(() => window.ClientSizeChanged -= OnWindowSizeChanged);

            _commandList = AddDisposable(window.GraphicsDevice.ResourceFactory.CreateCommandList());

            _mainView = AddDisposable(new MainView(new DiagnosticViewContext(game, _imGuiRenderer)));
            ImGuiUtility.SetupDocking();
        }
예제 #2
0
        public DeveloperModeView(Game game, GameWindow window)
        {
            _game   = game;
            _window = window;

            _imGuiRenderer = AddDisposable(new ImGuiRenderer(
                                               game.GraphicsDevice,
                                               game.GraphicsDevice.MainSwapchain.Framebuffer.OutputDescription,
                                               window.ClientBounds.Width,
                                               window.ClientBounds.Height));

            void OnWindowSizeChanged(object sender, EventArgs e)
            {
                _imGuiRenderer.WindowResized(window.ClientBounds.Width, window.ClientBounds.Height);
            }

            window.ClientSizeChanged += OnWindowSizeChanged;

            AddDisposeAction(() => window.ClientSizeChanged -= OnWindowSizeChanged);

            var inputMessageHandler = new CallbackMessageHandler(
                HandlingPriority.Window,
                message =>
            {
                if (_isGameViewFocused && message.MessageType == InputMessageType.KeyDown && message.Value.Key == Key.Escape)
                {
                    _isGameViewFocused = false;
                    return(InputMessageResult.Handled);
                }

                return(InputMessageResult.NotHandled);
            });

            game.InputMessageBuffer.Handlers.Add(inputMessageHandler);

            AddDisposeAction(() => game.InputMessageBuffer.Handlers.Remove(inputMessageHandler));

            _commandList = AddDisposable(game.GraphicsDevice.ResourceFactory.CreateCommandList());

            ImGuiUtility.SetupDocking();

            _mainView = AddDisposable(new MainView(new DiagnosticViewContext(game, window, _imGuiRenderer)));
        }