Example #1
0
        public void Render(RenderComposer composer)
        {
            for (var i = 0; i < _openWindows.Count; i++)
            {
                // Remove closed.
                if (!_openWindows[i].Open)
                {
                    lock (_openWindows)
                    {
                        _openWindows[i].Dispose();
                        _openWindows.RemoveAt(i);
                        i--;
                        continue;
                    }
                }

                // Overlap prevention on open. (kind of)
                var spawnOffset = new Vector2(10, 10);
                if (i != 0)
                {
                    ImGuiWindow prev = _openWindows[i - 1];
                    spawnOffset = prev.Position.X + prev.Size.X * 2 > Engine.Renderer.DrawBuffer.Size.X ?
                                  new Vector2(prev.Position.X, prev.Position.Y + prev.Size.Y + 10) :
                                  new Vector2(_openWindows[i - 1].Position.X + _openWindows[i - 1].Size.X + 10, _openWindows[i - 1].Position.Y);
                }

                _openWindows[i].Render(spawnOffset, composer);
            }
        }
Example #2
0
        public void AddWindow(ImGuiWindow win)
        {
            lock (_openWindows)
            {
                // Check if unique.
                if (_openWindows.Any(window => window.Title == win.Title))
                {
                    return;
                }

                win.Parent = this;
                _openWindows.Add(win);
            }
        }