-- Рекомендую запихнуть в конец кода, либо в часть кода с декларациями и т.п. --
size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Размер окна(!!! ДОЛЖНА БЫТЬ ИНИЦИАЛИЗИРОВАНА !!!)
th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period)
--[[
from - ImVec2 - Начальный размер окна
to - ImVec2 - Размер, на который нужно изменить
period - number - Время анимации(ms)
]]
local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period)
local xLost, yLost = (to.x - from.x), (to.y, from.y)
size_Animation_ChangeWindowSize = from
while (xLost ~= 0) and (yLost ~= 0) do wait(1)
size_Animation_ChangeWindowSize = size_Animation_ChangeWindowSize - imgui.ImVec2(xChange, yChange)
xLost = xLost - xChange
yLost = yLost - yChange
if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end
if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end
end
end)
-- Когда нужно произвести анимацию --
th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000)
-- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms)
-- Во время создания окна --
imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение
собственно говоря, куда нужно вставлять th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000), куда вот это imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение и как тут поменять размер? я просто немного не понял ocal xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period)Lua:-- Рекомендую запихнуть в конец кода, либо в часть кода с декларациями и т.п. -- size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Размер окна(!!! ДОЛЖНА БЫТЬ ИНИЦИАЛИЗИРОВАНА !!!) th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period) --[[ from - ImVec2 - Начальный размер окна to - ImVec2 - Размер, на который нужно изменить period - number - Время анимации(ms) ]] local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period) local xLost, yLost = (to.x - from.x), (to.y, from.y) size_Animation_ChangeWindowSize = from while (xLost ~= 0) and (yLost ~= 0) do wait(1) size_Animation_ChangeWindowSize = size_Animation_ChangeWindowSize - imgui.ImVec2(xChange, yChange) xLost = xLost - xChange yLost = yLost - yChange if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end end end) -- Когда нужно произвести анимацию -- th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000) -- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms) -- Во время создания окна -- imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение
На счёт работы не уверен, не тестил
собственно говоря, куда нужно вставлять th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000), куда вот это imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение и как тут поменять размер? я просто немного не понял ocal xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period)
-- Рекомендую запихнуть в конец кода, либо в часть кода с декларациями и т.п. --
size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Изначальный разме окна, можешь подгружать из файла настроек и т.п.
th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period)
--[[
from - ImVec2 - Начальный размер окна
to - ImVec2 - Размер, на который нужно изменить
period - number - Время анимации(ms)
]]
local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period)
local xLost, yLost = (to.x - from.x), (to.y, from.y)
size_Animation_ChangeWindowSize = from
while (xLost ~= 0) and (yLost ~= 0) do wait(1)
size_Animation_ChangeWindowSize = size_Animation_ChangeWindowSize - imgui.ImVec2(xChange, yChange)
xLost = xLost - xChange
yLost = yLost - yChange
if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end
if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end
end
end)
-- Когда нужно произвести анимацию, чего еще добавить я хз, когда нужно произвести анимацию - туда и вставляй --
th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000)
-- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms)
-- Перед созданием окна, как ты обычно и задаёшь размер --
imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение
я имел ввиду его вставлять перед imgui.Button? или в него и т.д.Код:-- Рекомендую запихнуть в конец кода, либо в часть кода с декларациями и т.п. -- size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Изначальный разме окна, можешь подгружать из файла настроек и т.п. th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period) --[[ from - ImVec2 - Начальный размер окна to - ImVec2 - Размер, на который нужно изменить period - number - Время анимации(ms) ]] local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period) local xLost, yLost = (to.x - from.x), (to.y, from.y) size_Animation_ChangeWindowSize = from while (xLost ~= 0) and (yLost ~= 0) do wait(1) size_Animation_ChangeWindowSize = size_Animation_ChangeWindowSize - imgui.ImVec2(xChange, yChange) xLost = xLost - xChange yLost = yLost - yChange if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end end end) -- Когда нужно произвести анимацию, чего еще добавить я хз, когда нужно произвести анимацию - туда и вставляй -- th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000) -- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms) -- Перед созданием окна, как ты обычно и задаёшь размер -- imgui.SetNextWindowSize(size_Animation_ChangeWindowSize, condition) -- Вместо condition своё значение
Ты о чём?...я имел ввиду его вставлять перед imgui.Button? или в него и т.д.
local xChange, yChange = ((to.500 - from.450) / period), ((to.500 - from.450) / period) <- вот так вот?
th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000)
-- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms)
я просто не понимаю куда это вставлять!! в OnDrawFrame? в саму кнопку? за пределы OnDrawFrameТы о чём?...
Для запуска анимации, просто:
Естественно, заменяешь значения на нужные тебеLua:th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000) -- Изменит размер окна от ImVec2(200, 200) до ImVec2(500, 500) за 1 секунду(1000ms)
на кнопку, на которую я нажимаюКогда нужно произвести анимацию - туда и вставляй, я хз, когда тебе нужно анимацию производить, если по нажатию на кнопку -
и т.п.Lua:if imgui.Button(...) then th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000) end
if imgui.Button('Информация', imgui.ImVec2(-1, 30)) then
th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000)
end
Пора переходить на Mimguiна кнопку, на которую я нажимаю
скрипт рипается с такой ошибкойLua:if imgui.Button('Информация', imgui.ImVec2(-1, 30)) then th_Animation_ChangeWindowSize:run(imgui.ImVec2(200, 200), imgui.ImVec2(500, 500), 1000) end
[14:35:56.597600] (error) GOSHelper: D:\1234\moonloader\GOShelper.lua:276: attempt to perform arithmetic on global 'size_Animation_ChangeWindowSize' (a userdata value)
stack traceback:
size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Размер окна(!!! ДОЛЖНА БЫТЬ ИНИЦИАЛИЗИРОВАНА !!!)
th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period)
local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period)
local xLost, yLost = (to.x - from.x), (to.y, from.y)
size_Animation_ChangeWindowSize = from
while (xLost ~= 0) and (yLost ~= 0) do wait(1)
size_Animation_ChangeWindowSize = imgui.ImVec2(size_Animation_ChangeWindowSize.x - xChange, size_Animation_ChangeWindowSize.y - yChange)
xLost = xLost - xChange
yLost = yLost - yChange
if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end
if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end
end
end)
ничего не происходитПора переходить на Mimgui
Версия для Moon Imgui:
Lua:size_Animation_ChangeWindowSize = imgui.ImVec2(0, 0) -- Размер окна(!!! ДОЛЖНА БЫТЬ ИНИЦИАЛИЗИРОВАНА !!!) th_Animation_ChangeWindowSize = lua_thread.create_suspended(function(from, to, period) local xChange, yChange = ((to.x - from.x) / period), ((to.y - from.y) / period) local xLost, yLost = (to.x - from.x), (to.y, from.y) size_Animation_ChangeWindowSize = from while (xLost ~= 0) and (yLost ~= 0) do wait(1) size_Animation_ChangeWindowSize = imgui.ImVec2(size_Animation_ChangeWindowSize.x - xChange, size_Animation_ChangeWindowSize.y - yChange) xLost = xLost - xChange yLost = yLost - yChange if (xLost < 0.5 or xLost > -0.5) then xLost = 0 end if (yLost < 0.5 or yLost > -0.5) then yLost = 0 end end end)