|
@@ -33,13 +33,10 @@ internal class MemberPreviewUpdater
|
|
AnimationKeyFramePreviewRenderer = new AnimationKeyFramePreviewRenderer(internals);
|
|
AnimationKeyFramePreviewRenderer = new AnimationKeyFramePreviewRenderer(internals);
|
|
}
|
|
}
|
|
|
|
|
|
- public void UpdatePreviews(bool rerenderPreviews, IEnumerable<Guid> membersToUpdate,
|
|
|
|
|
|
+ public void UpdatePreviews(bool undoBoundaryPassed, IEnumerable<Guid> membersToUpdate,
|
|
IEnumerable<Guid> masksToUpdate, IEnumerable<Guid> nodesToUpdate, IEnumerable<Guid> keyFramesToUpdate)
|
|
IEnumerable<Guid> masksToUpdate, IEnumerable<Guid> nodesToUpdate, IEnumerable<Guid> keyFramesToUpdate)
|
|
{
|
|
{
|
|
- if (!rerenderPreviews)
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
- UpdatePreviewPainters(membersToUpdate, masksToUpdate, nodesToUpdate, keyFramesToUpdate);
|
|
|
|
|
|
+ UpdatePreviewPainters(membersToUpdate, masksToUpdate, nodesToUpdate, keyFramesToUpdate, undoBoundaryPassed);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -48,17 +45,22 @@ internal class MemberPreviewUpdater
|
|
/// <param name="members">Members that should be rendered</param>
|
|
/// <param name="members">Members that should be rendered</param>
|
|
/// <param name="masksToUpdate">Masks that should be rendered</param>
|
|
/// <param name="masksToUpdate">Masks that should be rendered</param>
|
|
private void UpdatePreviewPainters(IEnumerable<Guid> members, IEnumerable<Guid> masksToUpdate,
|
|
private void UpdatePreviewPainters(IEnumerable<Guid> members, IEnumerable<Guid> masksToUpdate,
|
|
- IEnumerable<Guid> nodesToUpdate, IEnumerable<Guid> keyFramesToUpdate)
|
|
|
|
|
|
+ IEnumerable<Guid> nodesToUpdate, IEnumerable<Guid> keyFramesToUpdate, bool undoBoundaryPassed)
|
|
{
|
|
{
|
|
Guid[] memberGuids = members as Guid[] ?? members.ToArray();
|
|
Guid[] memberGuids = members as Guid[] ?? members.ToArray();
|
|
Guid[] maskGuids = masksToUpdate as Guid[] ?? masksToUpdate.ToArray();
|
|
Guid[] maskGuids = masksToUpdate as Guid[] ?? masksToUpdate.ToArray();
|
|
Guid[] nodesGuids = nodesToUpdate as Guid[] ?? nodesToUpdate.ToArray();
|
|
Guid[] nodesGuids = nodesToUpdate as Guid[] ?? nodesToUpdate.ToArray();
|
|
Guid[] keyFramesGuids = keyFramesToUpdate as Guid[] ?? keyFramesToUpdate.ToArray();
|
|
Guid[] keyFramesGuids = keyFramesToUpdate as Guid[] ?? keyFramesToUpdate.ToArray();
|
|
|
|
|
|
- RenderWholeCanvasPreview();
|
|
|
|
|
|
+ if (undoBoundaryPassed)
|
|
|
|
+ {
|
|
|
|
+ RenderWholeCanvasPreview();
|
|
|
|
+ }
|
|
|
|
+
|
|
RenderLayersPreview(memberGuids);
|
|
RenderLayersPreview(memberGuids);
|
|
RenderMaskPreviews(maskGuids);
|
|
RenderMaskPreviews(maskGuids);
|
|
RenderAnimationPreviews(memberGuids, keyFramesGuids);
|
|
RenderAnimationPreviews(memberGuids, keyFramesGuids);
|
|
|
|
+
|
|
RenderNodePreviews(nodesGuids);
|
|
RenderNodePreviews(nodesGuids);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -70,8 +72,12 @@ internal class MemberPreviewUpdater
|
|
var previewSize = StructureHelpers.CalculatePreviewSize(internals.Tracker.Document.Size);
|
|
var previewSize = StructureHelpers.CalculatePreviewSize(internals.Tracker.Document.Size);
|
|
float scaling = (float)previewSize.X / doc.SizeBindable.X;
|
|
float scaling = (float)previewSize.X / doc.SizeBindable.X;
|
|
|
|
|
|
- doc.PreviewPainter = new PreviewPainter(doc.Renderer, doc.Renderer, doc.AnimationHandler.ActiveFrameTime,
|
|
|
|
- doc.SizeBindable, internals.Tracker.Document.ProcessingColorSpace);
|
|
|
|
|
|
+ if (doc.PreviewPainter == null)
|
|
|
|
+ {
|
|
|
|
+ doc.PreviewPainter = new PreviewPainter(doc.Renderer, doc.Renderer, doc.AnimationHandler.ActiveFrameTime,
|
|
|
|
+ doc.SizeBindable, internals.Tracker.Document.ProcessingColorSpace);
|
|
|
|
+ }
|
|
|
|
+
|
|
doc.PreviewPainter.Repaint();
|
|
doc.PreviewPainter.Repaint();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -102,7 +108,7 @@ internal class MemberPreviewUpdater
|
|
structureMemberHandler.PreviewPainter.DocumentSize = doc.SizeBindable;
|
|
structureMemberHandler.PreviewPainter.DocumentSize = doc.SizeBindable;
|
|
structureMemberHandler.PreviewPainter.ProcessingColorSpace =
|
|
structureMemberHandler.PreviewPainter.ProcessingColorSpace =
|
|
internals.Tracker.Document.ProcessingColorSpace;
|
|
internals.Tracker.Document.ProcessingColorSpace;
|
|
-
|
|
|
|
|
|
+
|
|
structureMemberHandler.PreviewPainter.Repaint();
|
|
structureMemberHandler.PreviewPainter.Repaint();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -145,8 +151,19 @@ internal class MemberPreviewUpdater
|
|
if (internals.Tracker.Document.AnimationData.TryFindKeyFrame(cel.Id, out KeyFrame _))
|
|
if (internals.Tracker.Document.AnimationData.TryFindKeyFrame(cel.Id, out KeyFrame _))
|
|
{
|
|
{
|
|
KeyFrameTime frameTime = doc.AnimationHandler.ActiveFrameTime;
|
|
KeyFrameTime frameTime = doc.AnimationHandler.ActiveFrameTime;
|
|
- cel.PreviewPainter = new PreviewPainter(doc.Renderer, AnimationKeyFramePreviewRenderer, frameTime, doc.SizeBindable,
|
|
|
|
- internals.Tracker.Document.ProcessingColorSpace, cel.Id.ToString());
|
|
|
|
|
|
+ if (cel.PreviewPainter == null)
|
|
|
|
+ {
|
|
|
|
+ cel.PreviewPainter = new PreviewPainter(doc.Renderer, AnimationKeyFramePreviewRenderer, frameTime,
|
|
|
|
+ doc.SizeBindable,
|
|
|
|
+ internals.Tracker.Document.ProcessingColorSpace, cel.Id.ToString());
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ cel.PreviewPainter.FrameTime = frameTime;
|
|
|
|
+ cel.PreviewPainter.DocumentSize = doc.SizeBindable;
|
|
|
|
+ cel.PreviewPainter.ProcessingColorSpace = internals.Tracker.Document.ProcessingColorSpace;
|
|
|
|
+ }
|
|
|
|
+
|
|
cel.PreviewPainter.Repaint();
|
|
cel.PreviewPainter.Repaint();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -160,9 +177,20 @@ internal class MemberPreviewUpdater
|
|
ColorSpace processingColorSpace = internals.Tracker.Document.ProcessingColorSpace;
|
|
ColorSpace processingColorSpace = internals.Tracker.Document.ProcessingColorSpace;
|
|
VecI documentSize = doc.SizeBindable;
|
|
VecI documentSize = doc.SizeBindable;
|
|
|
|
|
|
- groupHandler.PreviewPainter =
|
|
|
|
- new PreviewPainter(doc.Renderer, AnimationKeyFramePreviewRenderer, frameTime, documentSize, processingColorSpace,
|
|
|
|
- groupHandler.Id.ToString());
|
|
|
|
|
|
+ if (groupHandler.PreviewPainter == null)
|
|
|
|
+ {
|
|
|
|
+ groupHandler.PreviewPainter =
|
|
|
|
+ new PreviewPainter(doc.Renderer, AnimationKeyFramePreviewRenderer, frameTime, documentSize,
|
|
|
|
+ processingColorSpace,
|
|
|
|
+ groupHandler.Id.ToString());
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ groupHandler.PreviewPainter.FrameTime = frameTime;
|
|
|
|
+ groupHandler.PreviewPainter.DocumentSize = documentSize;
|
|
|
|
+ groupHandler.PreviewPainter.ProcessingColorSpace = processingColorSpace;
|
|
|
|
+ }
|
|
|
|
+
|
|
groupHandler.PreviewPainter.Repaint();
|
|
groupHandler.PreviewPainter.Repaint();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -180,13 +208,24 @@ internal class MemberPreviewUpdater
|
|
if (member is not IPreviewRenderable previewRenderable)
|
|
if (member is not IPreviewRenderable previewRenderable)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- structureMemberHandler.MaskPreviewPainter = new PreviewPainter(
|
|
|
|
- doc.Renderer,
|
|
|
|
- previewRenderable,
|
|
|
|
- doc.AnimationHandler.ActiveFrameTime,
|
|
|
|
- doc.SizeBindable,
|
|
|
|
- internals.Tracker.Document.ProcessingColorSpace,
|
|
|
|
- nameof(StructureNode.EmbeddedMask));
|
|
|
|
|
|
+ if (structureMemberHandler.MaskPreviewPainter == null)
|
|
|
|
+ {
|
|
|
|
+ structureMemberHandler.MaskPreviewPainter = new PreviewPainter(
|
|
|
|
+ doc.Renderer,
|
|
|
|
+ previewRenderable,
|
|
|
|
+ doc.AnimationHandler.ActiveFrameTime,
|
|
|
|
+ doc.SizeBindable,
|
|
|
|
+ internals.Tracker.Document.ProcessingColorSpace,
|
|
|
|
+ nameof(StructureNode.EmbeddedMask));
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ structureMemberHandler.MaskPreviewPainter.FrameTime = doc.AnimationHandler.ActiveFrameTime;
|
|
|
|
+ structureMemberHandler.MaskPreviewPainter.DocumentSize = doc.SizeBindable;
|
|
|
|
+ structureMemberHandler.MaskPreviewPainter.ProcessingColorSpace =
|
|
|
|
+ internals.Tracker.Document.ProcessingColorSpace;
|
|
|
|
+ }
|
|
|
|
+
|
|
structureMemberHandler.MaskPreviewPainter.Repaint();
|
|
structureMemberHandler.MaskPreviewPainter.Repaint();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -202,7 +241,10 @@ internal class MemberPreviewUpdater
|
|
var executionQueue =
|
|
var executionQueue =
|
|
internals.Tracker.Document.NodeGraph
|
|
internals.Tracker.Document.NodeGraph
|
|
.AllNodes; //internals.Tracker.Document.NodeGraph.CalculateExecutionQueue(outputNode);
|
|
.AllNodes; //internals.Tracker.Document.NodeGraph.CalculateExecutionQueue(outputNode);
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ if(nodesGuids.Length == 0)
|
|
|
|
+ return;
|
|
|
|
+
|
|
foreach (var node in executionQueue)
|
|
foreach (var node in executionQueue)
|
|
{
|
|
{
|
|
if (node is null)
|
|
if (node is null)
|
|
@@ -222,7 +264,8 @@ internal class MemberPreviewUpdater
|
|
{
|
|
{
|
|
if (nodeVm.ResultPainter == null)
|
|
if (nodeVm.ResultPainter == null)
|
|
{
|
|
{
|
|
- nodeVm.ResultPainter = new PreviewPainter(doc.Renderer, renderable, doc.AnimationHandler.ActiveFrameTime,
|
|
|
|
|
|
+ nodeVm.ResultPainter = new PreviewPainter(doc.Renderer, renderable,
|
|
|
|
+ doc.AnimationHandler.ActiveFrameTime,
|
|
doc.SizeBindable, internals.Tracker.Document.ProcessingColorSpace);
|
|
doc.SizeBindable, internals.Tracker.Document.ProcessingColorSpace);
|
|
nodeVm.ResultPainter.Repaint();
|
|
nodeVm.ResultPainter.Repaint();
|
|
}
|
|
}
|