import * as ImGui_Impl from "./imgui_impl"; import { ImGuiWindow } from "./imgui_impl"; import * as ImGui from "imgui-js"; import { ImGuiIO } from "imgui-js" import { ImVec4 } from "imgui-js"; import { ImVec2 } from "imgui-js"; import * as PIXI from "pixi.js"; import * as U from "./utils"; async function main(): Promise<void> { console.log("main()"); await ImGui.default(); window.requestAnimationFrame(init); } const clearColor:ImVec4 = new ImVec4(0.7, 0.9, 1, 1); function init(): void { console.log("init()"); console.log("Total allocated space (uordblks) @ _init:", ImGui.bind.mallinfo().uordblks); ImGui_Impl.PrePIXIInit(); let settings = { width: 1, height: 1, antialias: true, backgroundColor: U.vec2col(clearColor), floatTexInternalFormat: PIXI.FLOAT_FORMATS.RGBA16F }; let app : PIXI.Application = new PIXI.Application(settings); const output: HTMLElement = 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); ImGui.StyleColorsLight(); ImGui_Impl.CreateDeviceObjects(); app.ticker.add( (deltaTime: number) => { const dt: number = deltaTime * 1 / (1000 * PIXI.settings.TARGET_FPMS); app.render(); } ); let resizeFunc = function() { app.renderer.resize(window.innerWidth, window.innerHeight); }; let bg: PIXI.Graphics = new PIXI.Graphics(); bg.beginFill(0xFF0000); bg.drawRect(0, 0, 600, 600); bg.endFill(); const imgui: ImGuiWindow = new ImGuiWindow(512, 512, update); app.stage.addChild(bg); app.stage.addChild(imgui); window.onresize = resizeFunc; resizeFunc(); } let windowOpen: boolean = true; let text: string = "text"; function update(timeElapsed: number): void { ImGui.SetNextWindowPos(new ImVec2(0, 0)); ImGui.SetNextWindowSize(new ImVec2(600, 400), ImGui.ImGuiCond.Always); ImGui.Begin("Test Window"); if (ImGui.Button("Add Text")) { text += "A"; } ImGui.Text(text); ImGui.End(); } (function() { if (document.readyState == "complete") { main(); } else { window.onload = main; } })();