Возвращает группу связанных с аддоном текстурных ресурсов. Группа представляет собой 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