Browse Source

Added previews based on cached result

flabbet 1 year ago
parent
commit
38bcd96c0c

+ 2 - 2
src/PixiEditor.AvaloniaUI/Models/Rendering/MemberPreviewUpdater.cs

@@ -697,7 +697,7 @@ internal class MemberPreviewUpdater
 
     private void RenderNodePreviews(List<IRenderInfo> infos)
     {
-        internals.Tracker.Document.NodeGraph.TryTraverse((node) =>
+        foreach(var node in internals.Tracker.Document.NodeGraph.AllNodes)
         {
             if (node is null)
                 return;
@@ -731,6 +731,6 @@ internal class MemberPreviewUpdater
 
             nodeVm.ResultPreview.DrawingSurface.Canvas.Restore();
             infos.Add(new NodePreviewDirty_RenderInfo(node.Id));
-        });
+        }
     }
 }

+ 3 - 1
src/PixiEditor.AvaloniaUI/Styles/Templates/NodeView.axaml

@@ -16,6 +16,7 @@
                         BorderBrush="{TemplateBinding BorderBrush}"
                         BorderThickness="{TemplateBinding BorderThickness}"
                         CornerRadius="{TemplateBinding CornerRadius}"
+                        MinWidth="200"
                         Margin="{TemplateBinding Margin}"
                         Name="RootBorder">
                     <Border.Effect>
@@ -52,7 +53,8 @@
                                     </ItemsControl>
                                 </StackPanel>
                             </Border>
-                            <Border CornerRadius="0, 0, 4.5, 4.5" Grid.Row="2" ClipToBounds="True">
+                            <Border IsVisible="{Binding !!ResultPreview, RelativeSource={RelativeSource TemplatedParent}}"
+                                CornerRadius="0, 0, 4.5, 4.5" Grid.Row="2" ClipToBounds="True">
                                 <visuals:SurfaceControl Width="200" Height="200"
                                                         Surface="{TemplateBinding ResultPreview}"
                                                         RenderOptions.BitmapInterpolationMode="None">

+ 6 - 0
src/PixiEditor.ChangeableDocument/Changes/NodeGraph/CreateNode_Change.cs

@@ -1,9 +1,11 @@
 using System.Collections.Immutable;
 using System.Reflection;
+using PixiEditor.ChangeableDocument.Changeables.Animations;
 using PixiEditor.ChangeableDocument.Changeables.Graph;
 using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces;
 using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes;
 using PixiEditor.ChangeableDocument.ChangeInfos.NodeGraph;
+using PixiEditor.ChangeableDocument.Rendering;
 using PixiEditor.Numerics;
 using Type = System.Type;
 
@@ -35,8 +37,12 @@ internal class CreateNode_Change : Change
         
         node.Position = new VecD(0, 0);
         node.Id = id;
+        
         target.NodeGraph.AddNode(node);
         ignoreInUndo = false;
+       
+        using RenderingContext context = new RenderingContext(new KeyFrameTime(0, 0), VecI.Zero, ChunkResolution.Full, target.Size);
+        node.ExecuteInternal(context);
         
         return CreateNode_ChangeInfo.CreateFromNode(node); 
     }