CPanoramaUIEngine /* PanoramaUIEngine001 */
@ 0x28: panorama::CUIEngineSource2* UIEngine;
panorama::CUIEngineSource2
@ 0xA0: CUtlVector<panorama::CTopLevelWindowSource2*> TopLevelWindows;
panorama::CTopLevelWindowSource2
@ 0x88: CUtlLinkedList<panorama::CUIPanel*, unsigned short> TopLevelVisiblePanels;
@ 0x160: const char* name;
panorama::CUIPanel
@ 0x10: const char* name;
@ 0x28: CUtlVector<panorama::CUIPanel*> children;
FindInTree(panelname):
if name == panelname return this
foreach child in children:
result = child.FindInTree(panelname)
if result return result
return null
does_panel_exist(windowname, panelname) = CPanoramaUIEngine::UIEngine?
.TopLevelWindows.find(windowname, &panorama::CTopLevelWindowSource2::name)? /* or foreach window */
.TopLevelVisiblePanels.any_of(e -> e.FindInTree(panelname) != nullptr)