Возвращает группу связанных с аддоном текстурных ресурсов. Группа представляет собой userdata (RelatedTexturesLua).
-- библиотека:
common
-- объявление:
function GetAddonRelatedTextureGroup( sysGroup, optional )
-- параметры:
sysGroup: string - идентификатор группы
optional: boolean or nil - если true, то отсутствие искомой группы не считается ошибкой (по умолчанию false)
-- возвращаемые значения:
RelatedTexturesLua or nil - группа текстур или nil в случае если группа не найдена
-- пример:
--------------------------------------------------------------------------------
-- Texture caches
--------------------------------------------------------------------------------
do
--------------------------------------------------------------------------------
local _textureDefaultGroupId = "Common"
local _dummyGroup = { HasTexture = function() return false end }
local _textureAddonGroups = {}
local _textureAddonCache = {}
local _textureStateGroups = {}
local _textureStateCache = {}
--------------------------------------------------------------------------------
local function GetGroupTexture( group, groupCache, sysName, optional )
local result = groupCache[ sysName ]
if result == nil then
local hasText = group:HasTexture( sysName )
if hasText then
result = group:GetTexture( sysName )
elseif optional then
result = false
---BEGIN_DEBUG---
else
local _, sysGroup = table.search( _textureAddonGroups, group )
if not sysGroup then
_, sysGroup = table.search( _textureStateGroups, group )
end
if group == _dummyGroup then
LogError( string.format( "Requested texture [%s] from non-existent group [%s]", tostring( sysName ), tostring( sysGroup ) ) )
else
LogError( string.format( "Requested non-existent texture [%s] from group [%s]", tostring( sysName ), tostring( sysGroup ) ) )
end
---END_DEBUG---
end
groupCache[ sysName ] = result
end
return result
end
--------------------------------------------------------------------------------
-- Получить текстуру sysName из группы аддона sysGroup (или Common если nil)
-- Если задано optional то отсутствие текстуры не считается ошибкой (группа должна существовать)
function GetAddonTexture( sysGroup, sysName, optional )
sysGroup = sysGroup or _textureDefaultGroupId
local group = _textureAddonGroups[ sysGroup ]
if not group then
group = common.GetAddonRelatedTextureGroup( sysGroup, true ) or _dummyGroup
_textureAddonGroups[ sysGroup ] = group
_textureAddonCache[ sysGroup ] = {}
end
return GetGroupTexture( group, _textureAddonCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------
-- Получить текстуру sysName из группы стейта sysGroup (или Common если nil)
-- Если задано optional то отсутствие текстуры не считается ошибкой (группа должна существовать)
function GetStateTexture( sysGroup, sysName, optional )
sysGroup = sysGroup or _textureDefaultGroupId
local group = _textureStateGroups[ sysGroup ]
if not group then
group = common.GetStateRelatedTextureGroup( sysGroup, true ) or _dummyGroup
_textureStateGroups[ sysGroup ] = group
_textureStateCache[ sysGroup ] = {}
end
return GetGroupTexture( group, _textureStateCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------
end
--------------------------------------------------------------------------------
См. описание группы текстурных ресурсов: RelatedTexturesLua