Размер окна imgui

~Justie~

Участник
Автор темы
133
25
Версия MoonLoader
.026-beta
Почему если я закрываю окно A imgui и сразу же открываю окно B, на том же месте, что и A, то у B размер такой же, как и у A? Ему задержка нужна или че
В imgui.SetNextWindowSize указаны совершенно разные значения

Закрываю окно A и открываю B вот так:
*в окне A*
Lua:
if imgui.Button(u8'Закрыть') then
    windowA.v = false
    windowB.v = true
end
 

~Justie~

Участник
Автор темы
133
25
кода мало чтоб тебе ответить корректно
если бы у меня было больше инфы я бы сам нашел решение
ну есть окно, в котором есть кнопка закрыть, по ее нажатия оно закрывается и открывается другое окно с другим размером, но на этом же месте на экране. Только у того окна, которое только что открылось размер первого. Т.е имгуи как бы отрисовало новое окно, но размер чет как то не судьба изменить
 

Angr

Известный
291
97
если бы у меня было больше инфы я бы сам нашел решение
ну есть окно, в котором есть кнопка закрыть, по ее нажатия оно закрывается и открывается другое окно с другим размером, но на этом же месте на экране. Только у того окна, которое только что открылось размер первого. Т.е имгуи как бы отрисовало новое окно, но размер чет как то не судьба изменить
Я просил твой код скинуть, imgui.Cond.FirstUseEver лишнее будет, если юзаешь его
Lua:
local imgui = require 'imgui'
local key = require 'vkeys'

-- одно из основных отличий от оригинального апи
-- все переменные, значения которых записываются в ImGui по указателю, могут использоваться только через специальные типы
local main_window_state = imgui.ImBool(false)
local ne_main = imgui.ImBool(false)
function imgui.OnDrawFrame()
  if not main_window_state.v and ne_main.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(600, 500))
    imgui.Begin('My window', ne_main)
    imgui.Text('WINDOW #2')
    if imgui.Button('Press me') then -- а вот и кнопка с действием
      ne_main.v = false
      main_window_state.v = not ne_main.v
    end
    imgui.End()
  elseif main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(150, 200)) -- меняем размер
    imgui.Begin('My window', main_window_state)
    imgui.Text('Hello world')
    if imgui.Button('Press me') then -- а вот и кнопка с действием
      main_window_state.v = false
      ne_main.v = not main_window_state.v
    end
    imgui.End()
  end
end

function main()
  while true do
    wait(0)
    if wasKeyPressed(key.VK_X) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v or ne_main.v-- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end
 
  • Нравится
Реакции: ~Justie~