mirror of
https://github.com/4sval/FModel.git
synced 2026-08-07 11:36:03 -05:00
本次提交对动画蓝图(AnimGraph)查看器和相关底层数据结构进行了大幅重构和功能增强,主要内容包括: - AnimGraphViewModel 支持全图合成视图、函数层识别、节点元数据追踪、Conduit 节点标记、状态机元数据完善等,图层布局算法更智能,兼容性和可读性显著提升。 - UI 增加图层侧边栏、合成全图优先显示、Conduit 节点高亮、属性面板调试信息等,交互体验更流畅。 - UAnimBlueprintGeneratedClass 及相关类型重构,支持节点、函数、PoseLink、属性等多维度高效访问,底层数据结构更健壮,接口更丰富。
138 lines
7.3 KiB
XML
138 lines
7.3 KiB
XML
<adonisControls:AdonisWindow x:Class="FModel.Views.AnimGraphViewer"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:converters="clr-namespace:FModel.Views.Resources.Converters"
|
|
xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
|
|
xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI"
|
|
xmlns:adonisExtensions="clr-namespace:AdonisUI.Extensions;assembly=AdonisUI"
|
|
WindowStartupLocation="CenterScreen" IconVisibility="Collapsed"
|
|
Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.75'}"
|
|
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.75'}">
|
|
<adonisControls:AdonisWindow.Style>
|
|
<Style TargetType="adonisControls:AdonisWindow" BasedOn="{StaticResource {x:Type adonisControls:AdonisWindow}}">
|
|
<Setter Property="Title" Value="Animation Blueprint Graph Viewer"/>
|
|
</Style>
|
|
</adonisControls:AdonisWindow.Style>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Toolbar -->
|
|
<Border Grid.Row="0" Padding="8 4"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BackgroundBrush}}"
|
|
adonisExtensions:LayerExtension.IncreaseLayer="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="PackageNameText" VerticalAlignment="Center" FontWeight="SemiBold" Margin="0 0 16 0"/>
|
|
<TextBlock x:Name="NodeCountText" VerticalAlignment="Center" Margin="0 0 16 0"/>
|
|
<TextBlock x:Name="ConnectionCountText" VerticalAlignment="Center" Margin="0 0 16 0"/>
|
|
<Button Content="Fit to View" MinWidth="78" Margin="4 0" Click="OnFitToView"/>
|
|
<Button Content="Reset Zoom" MinWidth="78" Margin="4 0" Click="OnResetZoom"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Main content: Graph + Properties panel -->
|
|
<Grid Grid.Row="1">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="240" MinWidth="180"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*" MinWidth="200"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="280" MinWidth="200"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Layer list -->
|
|
<Border Grid.Column="0"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BackgroundBrush}}"
|
|
adonisExtensions:LayerExtension.IncreaseLayer="True">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<Border Grid.Row="0" Padding="8 6"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer2BackgroundBrush}}">
|
|
<TextBlock Text="Layers" FontWeight="SemiBold" FontSize="13"/>
|
|
</Border>
|
|
|
|
<ListBox x:Name="LayerListBox"
|
|
Grid.Row="1"
|
|
Margin="8 6"
|
|
BorderThickness="0"
|
|
Background="Transparent"
|
|
MouseDoubleClick="OnLayerListDoubleClick">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"
|
|
TextTrimming="CharacterEllipsis"
|
|
ToolTip="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<GridSplitter Grid.Column="1" Width="4" HorizontalAlignment="Center" VerticalAlignment="Stretch"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BorderBrush}}"/>
|
|
|
|
<!-- Layer tabs with graph canvas (single-line, scrollable tab strip) -->
|
|
<TabControl x:Name="LayerTabControl" Grid.Column="2" SelectionChanged="OnLayerTabChanged"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer0BackgroundBrush}}">
|
|
<TabControl.Template>
|
|
<ControlTemplate TargetType="TabControl">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
|
|
<TabPanel IsItemsHost="True"/>
|
|
</ScrollViewer>
|
|
<ContentPresenter Grid.Row="1" ContentSource="SelectedContent"/>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</TabControl.Template>
|
|
</TabControl>
|
|
|
|
<GridSplitter Grid.Column="3" Width="4" HorizontalAlignment="Center" VerticalAlignment="Stretch"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BorderBrush}}"/>
|
|
|
|
<!-- Node properties panel -->
|
|
<Border Grid.Column="4"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BackgroundBrush}}"
|
|
adonisExtensions:LayerExtension.IncreaseLayer="True">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Properties header -->
|
|
<Border Grid.Row="0" Padding="8 6"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer2BackgroundBrush}}">
|
|
<TextBlock x:Name="PropertiesTitleText" Text="Properties" FontWeight="SemiBold" FontSize="13"/>
|
|
</Border>
|
|
|
|
<!-- Properties list -->
|
|
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
|
|
<StackPanel x:Name="PropertiesPanel" Margin="8 4"/>
|
|
</ScrollViewer>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Status bar -->
|
|
<Border Grid.Row="2" Padding="8 4"
|
|
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer1BackgroundBrush}}"
|
|
adonisExtensions:LayerExtension.IncreaseLayer="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="ZoomText" Text="Zoom: 100%" VerticalAlignment="Center" Margin="0 0 16 0"/>
|
|
<TextBlock x:Name="SelectedNodeText" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</adonisControls:AdonisWindow>
|