Exemplo n.º 1
0
        public void ImGuiSetup()
        {
            ImGuiIOPtr io = ImGui.GetIO();

            io.KeyMap[(int)ImGuiKey.Tab]        = (int)ConsoleKey.Tab;
            io.KeyMap[(int)ImGuiKey.LeftArrow]  = (int)ConsoleKey.LeftArrow;
            io.KeyMap[(int)ImGuiKey.RightArrow] = (int)ConsoleKey.RightArrow;
            io.KeyMap[(int)ImGuiKey.UpArrow]    = (int)ConsoleKey.UpArrow;
            io.KeyMap[(int)ImGuiKey.DownArrow]  = (int)ConsoleKey.DownArrow;
            io.KeyMap[(int)ImGuiKey.PageUp]     = (int)ConsoleKey.PageUp;
            io.KeyMap[(int)ImGuiKey.PageDown]   = (int)ConsoleKey.PageDown;
            io.KeyMap[(int)ImGuiKey.Home]       = (int)ConsoleKey.Home;
            io.KeyMap[(int)ImGuiKey.End]        = (int)ConsoleKey.End;
            io.KeyMap[(int)ImGuiKey.Delete]     = (int)ConsoleKey.Delete;
            io.KeyMap[(int)ImGuiKey.Backspace]  = (int)ConsoleKey.Backspace;
            io.KeyMap[(int)ImGuiKey.Enter]      = (int)ConsoleKey.Enter;
            io.KeyMap[(int)ImGuiKey.Escape]     = (int)ConsoleKey.Escape;
            io.KeyMap[(int)ImGuiKey.A]          = (int)ConsoleKey.A;
            io.KeyMap[(int)ImGuiKey.C]          = (int)ConsoleKey.C;
            io.KeyMap[(int)ImGuiKey.V]          = (int)ConsoleKey.V;
            io.KeyMap[(int)ImGuiKey.X]          = (int)ConsoleKey.X;
            io.KeyMap[(int)ImGuiKey.Y]          = (int)ConsoleKey.Y;
            io.KeyMap[(int)ImGuiKey.Z]          = (int)ConsoleKey.Z;

            io.DisplaySize = new Vector2(Game.Renderer.Resolution.Width, Game.Renderer.Resolution.Height);

            ImFontPtr ret;

            ret = io.Fonts.AddFontDefault();

            IntPtr pixels;
            int    width;
            int    height;
            int    bytesPerPixel;

            io.Fonts.GetTexDataAsRGBA32(out pixels, out width, out height, out bytesPerPixel);

            // Store our identifier
            var sheetBuilder = new SheetBuilder(SheetType.Indexed, width, height);

            var byteArray = new byte[width * height * bytesPerPixel];

            Marshal.Copy(pixels, byteArray, 0, width * height * bytesPerPixel);

            sp = sheetBuilder.AddRGBA(byteArray, new Size(width, height));

            // sp.Sheet.AsPng().Save("imguifont.png");
            io.Fonts.SetTexID(fontAtlasID);

            // текстура для шрифта будет уже второй, так как перед этим была установлена текстура палитры в Renderer.cs
            //Game.Renderer.ImguiSpriteRenderer.ns = 0;
            imguifonttextureLocation = Game.Renderer.ImguiSpriteRenderer.SetRenderStateForSprite(sp);            // записываем sheet от нашего спрайта в шейдерную коллекцию sheets, чтобы спрайт ушел в первый аргумент шейдера
            //Game.Renderer.ImguiSpriteRenderer.sheets[1] = Game.worldRenderer.World.Map.Rules.Sequences.SpriteCache.SheetBuilder.sheets[0];

            //Game.Renderer.ImguiSpriteRenderer.IncrementNumSheets();

            // Game.Renderer.ImguiSpriteRenderer.sheets[1] = Game.Renderer.SpriteRenderer.sheets[1];
        }