gtPluginArchive
class : gtPluginImpl

Описывает плагин для работы с архивами.
Каждый плагин который грузит ресурсы должен сам реализовывать функцию распаковки данных.
Поведение zip плагина в отношении поиска файлов такое, например, если указан файл для загрузки
m_gs->getModel(u"cube.obj");
то, если файла не будет в папке с программой, zip плагин будет искать файл с именем `cube.obj` в списке добавленных файлов из архива.
Если указано
m_gs->getModel(u"../cube.obj");
то имя то же самое.
Если указано
m_gs->getModel(u"../xyz/cube.obj");
то имя для поиска будет `xyz/cube.obj`, это значит что в архиве должна быть папка xyz а в ней файл cube.obj
Если указано
m_gs->getModel(u"../data/cube.obj");
или
m_gs->getModel(u"data/cube.obj");
то, если файл доступен в архиве и вне архива, то грузиться будет файл вне архива.
Главной папкой для ресурсов является папка с именем `data`.
По этому, например, для лёгкого модифицирования файлов лучше использовать вариант загрузки
m_gs->getModel(u"../data/cube.obj");
После всех настроек его можно сунуть в архив, а сам файл удалить.

Методы
gtPluginArchive::checkFormat
bool checkFormat( gtString* fn )
Вернёт истину если указанный архив поддерживается плагином.

gtPluginArchive::enumFiles
u32 enumFiles( gtString* fn, void * data, void(*cf)(void*,const char16_t*,u32,u32,u32) )
Перечислить файлы в указанном архиве.

gtPluginArchive::unpack
u8 * unpack( gtString* fn, gtString* an, u32 pos, u32 csize, u32 size )
Распаковать указанный файл из указанного архива.
В зависимости от нужд плагинов, можно передать указатель начала файла в архиве, его размер в запакованном виде и его размер в распакованном виде.
Возвращённый указатель хранит память выделенную вызовом функции gtMemAlloc. Необходимо освободить память вызвав функцию gtMemFree. Для автоматического удаления можно использовать gtMemPtr