#pragma once #include "HierarchyPanel.h" #include "Rendering/Assets/BuiltInIcons.h" #include "Composition/EditorPanelIds.h" #include #include #include #include namespace XCEngine::UI::Editor::App::HierarchyPanelInternal { using ::XCEngine::UI::UIColor; using ::XCEngine::UI::UIInputEvent; using ::XCEngine::UI::UIPoint; using ::XCEngine::UI::UIRect; using Widgets::UIEditorTreeViewHitTarget; using Widgets::UIEditorTreeViewHitTargetKind; using Widgets::UIEditorTreeViewInvalidIndex; inline constexpr float kDragThreshold = 4.0f; inline constexpr UIColor kDragPreviewColor(0.92f, 0.92f, 0.92f, 0.42f); bool ContainsPoint(const UIRect& rect, const UIPoint& point); float ComputeSquaredDistance(const UIPoint& lhs, const UIPoint& rhs); ::XCEngine::UI::UITextureHandle ResolveGameObjectIcon(const BuiltInIcons* icons); std::vector FilterHierarchyInputEvents( const UIRect& bounds, const std::vector& inputEvents, bool allowInteraction, bool panelActive, bool captureActive); const Widgets::UIEditorTreeViewItem* ResolveHitItem( const Widgets::UIEditorTreeViewLayout& layout, const std::vector& items, const UIPoint& point, UIEditorTreeViewHitTarget* hitTargetOutput = nullptr); std::size_t FindVisibleIndexForItemId( const Widgets::UIEditorTreeViewLayout& layout, const std::vector& items, std::string_view itemId); } // namespace XCEngine::UI::Editor::App::HierarchyPanelInternal