-- Способ подгрузки через файл
local player = gif.GifPlayer.new("C:\\путь\\до\\вашей\\gif.gif")
--[[
Добавленная мной подгрузка из памяти.
В качестве примера тут по сути все таже подгрузка из файла,
но суть в том, что это побайтово и можно использовать к примеру
в связке с https://www.blast.hk/threads/13380/post-1517490,
если подкорректировать сам сниппет (но тут вы сами, оки?)
]]
local file, err = io.open("C:\\путь\\до\\вашей\\gif.gif", "rb")
if not file then return end
local imageData = file:read("*a")
file:close()
local player = gif.GifPlayer.new(imageData, #imageData)
function onDraw() -- допустим это у вас вызывается в imgui.OnFrame вунтир imgui.Begin
-- Новый метод, т.к. теперь иконки загружаются в отдельном потоке
if not player:IsLoaded() then return end
--[[
Можно было бы вынести во внутренности плагина, но это либо лишний раз синхрить потоки,
либо сувать в ProcessPlay, но поскольку этой либой будет пользоваться скорее всего
полтора инвалида (я и моя шиза), то пусть будет вызываться из луашки
]]
if not player:IsInitialized() then
-- Инициализирует сам рендер (не путать с подгрузкой, которая происходит в new)
player:Initialize()
print("player:Initialize")
end
--[[
Как пример - рендер внутри mimgui, но по факту, это всего-лишь d3d9texture,
который можете сувать хоть вместо игровых текстур RW
]]
local texture = ffi.cast("void*", player:ProcessPlay())
imgui.Image(texture, imgui.ImVec2(100, 100))
end