Currently I’m working on a piece of code for copying and pasting certain game objects. I am using the Event.current.commandName to check for a Paste or Duplicate event. When this event occurs I want to get access to the pasted gameObject, but the selection would still be the copied element. I solved this by adding a flag to my class, signaling that we pasted an object. Now we can use OnSelectionChanged to do everything we need:
private static void HandleCopyPaste()
{
Event e = Event.current;
if (e.commandName == "Paste" || e.commandName == "Duplicate")
{
pasted = true;
}
}
static void OnSelectionChange()
{
if (pasted)
{
GameObject selected = Selection.activeGameObject;
// Do stuff
pasted = false;
}
}
My problem:
When I paste two gameObjects quickly after oneanother, the first gameObject never goes through the if(pasted), missing my crucial // Do stuff, which in turn breaks my code.
Also, I doubt this method will work when handling multiple gameObjects.
My question:
Is there a better way to get the gameObject(s) that is (are) being pasted? Can we maybe access the clipboard?
[edit] So basically this is what I would want:
private static void HandleCopyPaste()
{
Event e = Event.current;
if (e.commandName == "Paste" || e.commandName == "Duplicate")
{
GameObject pastedObject = GetPastedObject();
pastedObject.DoStuff();
}
}
Is there a way to access the pasted object during the commandName “Paste”?