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

l1ght777

Активный
Автор темы
345
53
Версия 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?

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

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()
 
Последнее редактирование:

l1ght777

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

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?

l1ght777

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

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?

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

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)) и ты уже устанавливаешь позицию этому окну
 

l1ght777

Активный
Автор темы
345
53

Okak_Pon

Активный
370
75
это примерный код, я менял до этого, а когда отправлял сюда то забыл изменить
Попробуй так:
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)
 

l1ght777

Активный
Автор темы
345
53
Я тебе вверху ответил, чо ап?
Если не работает, то скинь чо сейчас у тебя
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 · Просмотры: 37