//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CHudTexture *CHud::AddUnsearchableHudIconToList(CHudTexture& texture) { // These names are composed based on the texture file name char composedName[512]; if (texture.bRenderUsingFont) { Q_snprintf(composedName, sizeof(composedName), "%s_c%i", texture.szTextureFile, texture.cCharacterInFont); } else { Q_snprintf(composedName, sizeof(composedName), "%s_%i_%i_%i_%i", texture.szTextureFile, texture.rc.left, texture.rc.top, texture.rc.right, texture.rc.bottom); } CHudTexture *icon = GetIcon(composedName); if (icon) { return icon; } CHudTexture *newTexture = (CHudTexture *) g_HudTextureMemoryPool.Alloc(); *newTexture = texture; SetupNewHudTexture(newTexture); int idx = m_Icons.Insert(composedName, newTexture); return m_Icons[idx]; }
CHudIcons::~CHudIcons() { int c = m_Icons.Count(); for (int i = c - 1; i >= 0; i--) { CHudTexture *tex = m_Icons[i]; g_HudTextureMemoryPool.Free(tex); } m_Icons.Purge(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- PanelAnimationMap *CPanelAnimationDictionary::FindOrAddPanelAnimationMap( char const *className ) { PanelAnimationMap *map = FindPanelAnimationMap( className ); if ( map ) return map; Panel::InitPropertyConverters(); PanelAnimationMapDictionaryEntry entry; entry.map = (PanelAnimationMap *)m_PanelAnimationMapPool.Alloc(); m_AnimationMaps.Insert( StripNamespace( className ), entry ); return entry.map; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CHudTexture *CHud::AddSearchableHudIconToList(CHudTexture& texture) { CHudTexture *icon = GetIcon(texture.szShortName); if (icon) { return icon; } CHudTexture *newTexture = (CHudTexture *) g_HudTextureMemoryPool.Alloc(); *newTexture = texture; SetupNewHudTexture(newTexture); int idx = m_Icons.Insert(texture.szShortName, newTexture); return m_Icons[idx]; }
//----------------------------------------------------------------------------- // Purpose: cleans up memory allocated for m_rg* arrays //----------------------------------------------------------------------------- CHud::~CHud() { int c = m_Icons.Count(); for (int i = c - 1; i >= 0; i--) { CHudTexture *tex = m_Icons[i]; g_HudTextureMemoryPool.Free(tex); } m_Icons.Purge(); c = m_RenderGroups.Count(); for (int i = c - 1; i >= 0; i--) { CHudRenderGroup *group = m_RenderGroups[i]; m_RenderGroups.RemoveAt(i); delete group; } }