[imgui] 2 связанных окна / "Плавающие" кнопки.

A S K I T

Активный
Автор темы
200
69
Версия MoonLoader
.026-beta
1635084725766.png


Как сделать вот такое? Тут я как понял два чилда, а само окно просто прозрачное, а можно ли чтобы это были два отдельных окна, но как-будто привязаны друг к другу(чтобы позиция одного окна изменялась в зависимости от позиции другого окна)?

Ну или как сделать чтобы эти кнопки висели "в воздухе"?

1635084678775.png
 

meowprd

Тот самый Котовский
Проверенный
1,278
718
Пример на mimgui, может и не очень идеальный, но рабочий:
Lua:
local windowPos = {
    x = 0,
    y = 0
}

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

imgui.OnFrame( --* Background
    function() return window[0] end,
    function() end,
    function(self)
        imgui.SetNextWindowPos(imgui.ImVec2(windowPos.x - 110, windowPos.y), imgui.Cond.Always) -- 110 = 100 (размер текущего окна по X) + 10 (небольшой отступ)
        imgui.SetNextWindowSize(imgui.ImVec2(100, 200), imgui.Cond.Always)

        imgui.Begin("first window", _, imgui.WindowFlags.NoResize)
            imgui.Text("This is first window!")
        imgui.End()
    end
)

imgui.OnFrame(
    function() return window[0] end,
    function() end,
    function(self)
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw/2, sh/2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(800, 480), imgui.Cond.FirstUseEver)


        imgui.Begin("second window", _, imgui.WindowFlags.NoResize)
            imgui.Text("This is second window")
            local pos = imgui.GetWindowPos()
            windowPos.x, windowPos.y = pos.x, pos.y
        imgui.End()
    end
)