Newer
Older
7gui / src / main.js
System.register(["./imgui_impl", "imgui-js", "pixi.js", "./utils"], function (exports_1, context_1) {
    "use strict";
    var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
        return new (P || (P = Promise))(function (resolve, reject) {
            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
            function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        });
    };
    var ImGui_Impl, ImGui, imgui_js_1, imgui_js_2, PIXI, U, clearColor, ImGuiRenderer, windowOpen, text;
    var __moduleName = context_1 && context_1.id;
    function main() {
        return __awaiter(this, void 0, void 0, function* () {
            PIXI.WebGLRenderer.registerPlugin("imgui_renderer", ImGuiRenderer);
            console.log("main()");
            yield ImGui.default();
            window.requestAnimationFrame(init);
        });
    }
    function init() {
        console.log("init()");
        console.log("Total allocated space (uordblks) @ _init:", ImGui.bind.mallinfo().uordblks);
        // Setup Dear ImGui binding
        ImGui.IMGUI_CHECKVERSION();
        ImGui.CreateContext();
        const io = ImGui.GetIO();
        io.ConfigFlags |= ImGui.ConfigFlags.NavEnableKeyboard; // Enable Keyboard Controls
        // Setup style
        ImGui.StyleColorsLight();
        let settings = { width: 1, height: 1, antialias: true, backgroundColor: U.vec2col(clearColor) };
        let app = new PIXI.Application(settings);
        const output = document.getElementById("output") || document.body;
        output.appendChild(app.view);
        app.view.tabIndex = 1;
        app.view.style.position = "absolute";
        app.view.style.left = "0px";
        app.view.style.right = "0px";
        app.view.style.top = "0px";
        app.view.style.bottom = "0px";
        app.view.style.width = "100%";
        app.view.style.height = "100%";
        ImGui_Impl.Init(app.view);
        app.ticker.add((deltaTime) => {
            const dt = deltaTime * 1 / (1000 * PIXI.settings.TARGET_FPMS);
            ImGui_Impl.NewFrame(dt);
            ImGui.NewFrame();
            update(app, dt);
            ImGui.EndFrame();
            ImGui.Render();
            app.render();
        });
        const imguiLayer = new PIXI.Sprite();
        imguiLayer.pluginName = "imgui_renderer";
        app.stage.addChild(imguiLayer);
        let resizeFunc = function () {
            app.renderer.resize(window.innerWidth, window.innerHeight);
        };
        window.onresize = resizeFunc;
        resizeFunc();
        window.onkeydown = keyDown;
    }
    function keyDown() {
        text += "B";
    }
    function update(app, timeElapsed) {
        ImGui.SetNextWindowPos(new imgui_js_2.ImVec2(0, 0));
        ImGui.SetNextWindowSize(new imgui_js_2.ImVec2(600, 400), ImGui.ImGuiCond.Always);
        ImGui.Begin("Test Window", (_ = windowOpen) => windowOpen = _, 0);
        if (ImGui.Button("Add Text")) {
            text += "A";
        }
        ImGui.Text(text);
        ImGui.End();
    }
    return {
        setters: [
            function (ImGui_Impl_1) {
                ImGui_Impl = ImGui_Impl_1;
            },
            function (ImGui_1) {
                ImGui = ImGui_1;
                imgui_js_1 = ImGui_1;
                imgui_js_2 = ImGui_1;
            },
            function (PIXI_1) {
                PIXI = PIXI_1;
            },
            function (U_1) {
                U = U_1;
            }
        ],
        execute: function () {
            clearColor = new imgui_js_1.ImVec4(0.7, 0.9, 1, 1);
            ImGuiRenderer = class ImGuiRenderer extends PIXI.ObjectRenderer {
                constructor(r) {
                    super(r);
                }
                render(notUsed) {
                    ImGui_Impl.RenderDrawData(ImGui.GetDrawData());
                }
            };
            windowOpen = true;
            text = "text";
            /*
            const gl: WebGLRenderingContext | null = ImGui_Impl.gl;
            if (gl) {
                gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
                gl.clearColor(clearColor.x, clearColor.y, clearColor.z, clearColor.w);
                gl.clear(gl.COLOR_BUFFER_BIT);
                //gl.useProgram(0); // You may want this if using this code in an OpenGL 3+ context where shaders may be bound
            }
            
            const ctx: CanvasRenderingContext2D | null = ImGui_Impl.ctx;
            if (ctx) {
                // ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
                ctx.fillStyle = `rgba(${clearColor.x * 0xff}, ${clearColor.y * 0xff}, ${clearColor.z * 0xff}, ${clearColor.w})`;
                ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
            }
            */
            (function () {
                if (document.readyState == "complete") {
                    main();
                }
                else {
                    window.onload = main;
                }
            })();
        }
    };
});
//# sourceMappingURL=main.js.map