изменение позиции окна

$Mr.R1ch$

Активный
Автор темы
253
37
Версия MoonLoader
Другое
есть ли какая то функция, которая меняет позицию окна когда оно уже открыто? (не imgui.SetNextWindowPos) хочу сделать анимацию для мимгуи (например по нажатию кнопки происходит изменение позиции)
 
Решение
Lua:
imgui.OnFrame(function() return MainWindow[0] and not isGamePaused() end, function(window)
    --imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.Begin(u8'Пример', MainWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
     imgui.SetWindowPosVec2(imgui.ImVec2(500, 500))
     if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr(u8'Пример', imgui.ImVec2(800, 500))
     end
     imgui.End()
end)
удали 4 строку

wojciech?

Известный
Проверенный
345
223
функция не работает, не меняет позицию окна
внутри окна вызываешь?

Lua:
imgui.Begin("window")
    imgui.Text("empty")
imgui.End()

imgui.Begin("any")
    -- устанавливает позицию текущему окну (в контексте которого находится)
    imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))

    if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr("window", imgui.ImVec2(100, 500))
    end
imgui.End()
 
Последнее редактирование:

$Mr.R1ch$

Активный
Автор темы
253
37
внутри окна вызываешь?

Lua:
imgui.Begin("window")
    imgui.Text("empty")
imgui.End()

imgui.Begin("any")
    -- устанавливает позицию текущему окну (в контексте которого находится)
    imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))

    if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr("window", imgui.ImVec2(100, 500))
    end
imgui.End()
внутри, попробую сделать как ты

внутри окна вызываешь?

Lua:
imgui.Begin("window")
    imgui.Text("empty")
imgui.End()

imgui.Begin("any")
    -- устанавливает позицию текущему окну (в контексте которого находится)
    imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))

    if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr("window", imgui.ImVec2(100, 500))
    end
imgui.End()
попробовал и не получилось
 
Последнее редактирование:
  • Bug
Реакции: wojciech?

$Mr.R1ch$

Активный
Автор темы
253
37
показал бы код хотя бы, как это используешь
хз, попробовал сделать снова и окно не передвигается, а кнопка так тоже не работает

Lua:
imgui.OnFrame(function() return MainWindow[0] and not isGamePaused() end, function(window)
    --imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.Begin(u8'Пример', MainWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
     imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))
     if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr("window", imgui.ImVec2(100, 500))
     end
     imgui.End()
end)
 

wojciech?

Известный
Проверенный
345
223
хз, попробовал сделать снова и окно не передвигается, а кнопка так тоже не работает

Lua:
imgui.OnFrame(function() return MainWindow[0] and not isGamePaused() end, function(window)
    --imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.Begin(u8'Пример', MainWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
     imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))
     if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr("window", imgui.ImVec2(100, 500))
     end
     imgui.End()
end)
мб проблема в том, что ты несуществующее окно двигаешь?

1728466628255.png



imgui.SetWindowPosVec2(imgui.ImVec2(0, 500)) и ты уже устанавливаешь позицию этому окну
 

$Mr.R1ch$

Активный
Автор темы
253
37

Daniel_Govnocode

Активный
275
39
это примерный код, я менял до этого, а когда отправлял сюда то забыл изменить
Попробуй так:
Lua:
imgui.OnFrame(function() return MainWindow[0] and not isGamePaused() end, function(window)
    --imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.Begin(u8'Пример', MainWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
     imgui.SetWindowPosVec2(imgui.ImVec2(0, 500))
     if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr(u8'Пример', imgui.ImVec2(100, 500))
     end
     imgui.End()
end)
 

$Mr.R1ch$

Активный
Автор темы
253
37
Я тебе вверху ответил, чо ап?
Если не работает, то скинь чо сейчас у тебя
Lua:
imgui.OnFrame(function() return MainWindow[0] and not isGamePaused() end, function(window)
    --imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.Begin(u8'Пример', MainWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
     imgui.SetWindowPosVec2(imgui.ImVec2(500, 500))
     if imgui.Button("set window pos") then
        -- устанавливает позицию окна по его str_id
        imgui.SetWindowPosStr(u8'Пример', imgui.ImVec2(800, 500))
     end
     imgui.End()
end)
 

Вложения

  • km_20241031_720p_60f_20241031_141534.gif
    km_20241031_720p_60f_20241031_141534.gif
    3 MB · Просмотры: 8