47 lines
1.6 KiB
C++
47 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "HierarchyPanel.h"
|
|
|
|
#include "Rendering/Assets/BuiltInIcons.h"
|
|
|
|
#include <XCEditor/Collections/UIEditorTreeView.h>
|
|
#include <XCEditor/Foundation/UIEditorTheme.h>
|
|
|
|
#include <algorithm>
|
|
#include <string_view>
|
|
|
|
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 std::string_view kHierarchyPanelId = "hierarchy";
|
|
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<UIInputEvent> FilterHierarchyInputEvents(
|
|
const UIRect& bounds,
|
|
const std::vector<UIInputEvent>& inputEvents,
|
|
bool allowInteraction,
|
|
bool panelActive,
|
|
bool captureActive);
|
|
const Widgets::UIEditorTreeViewItem* ResolveHitItem(
|
|
const Widgets::UIEditorTreeViewLayout& layout,
|
|
const std::vector<Widgets::UIEditorTreeViewItem>& items,
|
|
const UIPoint& point,
|
|
UIEditorTreeViewHitTarget* hitTargetOutput = nullptr);
|
|
std::size_t FindVisibleIndexForItemId(
|
|
const Widgets::UIEditorTreeViewLayout& layout,
|
|
const std::vector<Widgets::UIEditorTreeViewItem>& items,
|
|
std::string_view itemId);
|
|
|
|
} // namespace XCEngine::UI::Editor::App::HierarchyPanelInternal
|