The previous fix (e.OriginalSource != sender) blocked panning entirely
when clicking on nodes, making them feel like buttons. Connection Path
elements also received mouse events, potentially interfering.
Fix:
- Use a drag-threshold mechanism: clicking selects a node without
jumping, dragging from anywhere (including nodes) starts panning
after a 5px threshold is exceeded.
- Register MouseLeftButtonDown with AddHandler(handledEventsToo: true)
so the panning handler fires even when nodes set e.Handled = true.
- Set IsHitTestVisible = false on connection Path elements so they
don't interfere with mouse events.
- Check e.LeftButton state in OnCanvasMouseMove to prevent stale pan
state when the button is released unexpectedly.
Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
In WPF, MouseLeftButtonDown is a Direct routed event that fires
independently on each UIElement with a fresh Handled=false. Setting
e.Handled=true in the node's click handler does NOT prevent
OnCanvasMouseDown on the parent canvasBorder from firing. This caused
clicking a node to both select it AND start panning, making the graph
jump when the mouse moved.
Fix: check e.OriginalSource != sender in OnCanvasMouseDown so panning
only starts when clicking directly on the canvas background.
Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
- Fix OnMouseWheel: get mouse position relative to parent Border (stable
coords) instead of Canvas (transformed coords that shift during zoom);
compute canvas-local point manually and preserve it after scale change
- Fix OnCanvasMouseDown/Move: use parent Border coords for consistent
panning behavior
- Improve connection lines: thicker stroke (2px), higher opacity (0.8),
minimum bezier tangent length (50px) for smoother short-distance curves
Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
- AnimGraphViewModel: Add AnimGraphLayer class and BuildLayers() to group
nodes into connected subgraphs displayed as separate tabs
- AnimGraphViewModel: Add topological layout (LayoutLayerNodes) so nodes
flow left-to-right by dependency depth instead of grid
- AnimGraphViewer.xaml: Replace single canvas with TabControl for layers
and a right-side properties panel with GridSplitter
- AnimGraphViewer.xaml.cs: Per-layer canvas state, node selection with
property panel population, per-tab zoom/pan
Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
In cooked UE assets, UEdGraphNode objects are stripped as editor-only data
(PKG_FilterEditorOnly). The actual animation node information is stored in:
- UAnimBlueprintGeneratedClass.ChildProperties (FStructProperty entries describing node types)
- ClassDefaultObject properties (FStructFallback values with node data)
- FPoseLink/FComponentSpacePoseLink structs with LinkID for connections
Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
* Fix HTML tags in some Quests DisplayName.
* New Backups & Hotfixes API
* fix backups being null
---------
Co-authored-by: GhostScissors <79089473+GhostScissors@users.noreply.github.com>
* 'The Dark Pictures Anthology: House of Ashes' Wwise support
* AnyItemMeetsConditionConverter.ConditionMode
---------
Co-authored-by: Asval <asval.contactme@gmail.com>
+ filter by types, find by references (UE5+), and a lot of other improvements
Co-authored-by: Asval <asval.contactme@gmail.com>
Co-authored-by: LongerWarrior <LongerWarrior@gmail.com>