- 4,795
- 6,468
GifPlayerLua - враппер для DX9 враппера для либы gifdec. Использовать его можно только в GTA SA, т.к. захардкожены хуки для событий OnLostDevice и OnResetDevice.
Класс GifPlayer
Пример использования
Абстрактный пример написанный на коленке. Он в приведенном виде не работает и вообще lua-враппер не тестировался
Здесь
При изменении разрешения игры или сворачивании/разворачивании окна плагин сам вызывает методы Invalidate и Initialize при наступлении событий onLostDevice и onResetDevice, так что в lua даже нет этих функций.
Исходники плеера: https://gitlab.com/SR_team/gifplayerlua
В приложении скомпилированная библиотека для муна
Класс GifPlayer
new( string ) | Конструктор. В конструкторе из файла загружаются фреймы. Для каждого фрейма аллоцируется отдельная память, что бы не считывать файл повторно. |
ProcessPlay | Функция проигрывания gif-анимации. Сама функция ничего не рисует, она возвращает DX9 текстуру для рендера |
ResetLoop | Сброс циклов воспроизведения, для воспроизведения анимации с начала |
IsLoopEnded | Проверка, закончилась ли анимация. |
IsDrawBg | Проверка, рисуется ли для этой gif задний план. По умолчанию рисовать ли задник определяется в конструкторе |
ToggleBg( bool ) | Переключить отрисовку заднего плана. |
ToggleBgNoUpdate( bool ) | То же самое, что и выше, но текстуры не изменятся, пока не наступит событие OnResetDevice или не будет вызвано принудительное обновление |
Update | Принудительное обновление текстур анимации |
GetWidth | Ширина изображения GIF |
GetHeight | Высота изображения GIF |
Пример использования
Абстрактный пример написанный на коленке. Он в приведенном виде не работает и вообще lua-враппер не тестировался
Lua:
local gif = require 'GifPlayerLua'
local player = gif.GifPlayer.new("anim.gif")
function event:onDraw()
local dx9tex = player:ProcessPlay()
local x = 0
local y = 0
drawTexture(dx9tex, x, y, player:GetWidth(), player:GetHeight())
if player:IsLoopEnded() then
player:ResetLoop()
end
end
Здесь
event:onDraw
- вымышленное событие, которое вызывается в момент рендера изображения на экране, а drawTexture
- вымышленная функция для рисования dx9 текстур.При изменении разрешения игры или сворачивании/разворачивании окна плагин сам вызывает методы Invalidate и Initialize при наступлении событий onLostDevice и onResetDevice, так что в lua даже нет этих функций.
Исходники плеера: https://gitlab.com/SR_team/gifplayerlua
В приложении скомпилированная библиотека для муна