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) };
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);
//const holder: PIXI.Container = new PIXI.Container();
//holder.addChild(bg);
//holder.addChild(imgui);
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;
}
})();