diff --git a/Source/Editor/Surface/SurfaceNode.cs b/Source/Editor/Surface/SurfaceNode.cs
index 4f628b6af..65b481c75 100644
--- a/Source/Editor/Surface/SurfaceNode.cs
+++ b/Source/Editor/Surface/SurfaceNode.cs
@@ -395,6 +395,14 @@ namespace FlaxEditor.Surface
///
public virtual SurfaceNode[] SealedNodes => null;
+ ///
+ /// Called after adding the control to the surface after paste.
+ ///
+ /// The nodes IDs mapping (original node ID to pasted node ID). Can be sued to update internal node's data after paste operation from the original data.
+ public virtual void OnPasted(System.Collections.Generic.Dictionary idsMapping)
+ {
+ }
+
///
/// Gets a value indicating whether this node uses dependent boxes.
///
diff --git a/Source/Editor/Surface/VisjectSurface.CopyPaste.cs b/Source/Editor/Surface/VisjectSurface.CopyPaste.cs
index fd27315e6..62aaccc73 100644
--- a/Source/Editor/Surface/VisjectSurface.CopyPaste.cs
+++ b/Source/Editor/Surface/VisjectSurface.CopyPaste.cs
@@ -419,6 +419,10 @@ namespace FlaxEditor.Surface
{
node.Value.OnSpawned(SurfaceNodeActions.Paste);
}
+ foreach (var node in nodes)
+ {
+ node.Value.OnPasted(idsMapping);
+ }
// Add undo action
if (Undo != null && nodes.Count > 0)