Files
GhostEngine/Ghost.Editor/View/Pages/EngineEditor/HierarchyPage.xaml.cs
2026-02-03 21:49:14 +09:00

61 lines
1.5 KiB
C#

using Ghost.Editor.Controls.Internal;
using Ghost.Editor.Core.Contracts;
using Ghost.Editor.Core.SceneGraph;
using Ghost.Editor.ViewModels.Pages.EngineEditor;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
namespace Ghost.Editor.View.Pages.EngineEditor;
internal sealed partial class HierarchyPage : NavigationTabPage
{
private readonly IInspectorService _inspectorService;
public HierarchyViewModel ViewModel
{
get;
}
public HierarchyPage()
{
_inspectorService = App.GetService<IInspectorService>();
ViewModel = App.GetService<HierarchyViewModel>();
InitializeComponent();
}
public override void OnNavigatedTo(object? parameter)
{
ViewModel.OnNavigatedTo(parameter);
}
public override void OnNavigatedFrom()
{
ViewModel.OnNavigatedFrom();
}
private void TreeView_SelectionChanged(TreeView sender, TreeViewSelectionChangedEventArgs args)
{
if (args.AddedItems.Count > 0 && args.AddedItems[0] is IInspectable inspectable)
{
_inspectorService.SetSelected(inspectable, ViewModel);
}
else
{
_inspectorService.SetSelected(null, ViewModel);
}
}
}
internal partial class HierarchyTemplateSector : DataTemplateSelector
{
protected override DataTemplate SelectTemplateCore(object item)
{
if (item is not SceneGraphNode node)
{
return base.SelectTemplateCore(item);
}
return node.GetSceneHierarchyTemplate();
}
}