|
I need to repaint an EditorWindow when the user performs undo/redo. But I don't see any callbacks or events associated with undo/redo... How can I do this?
(comments are locked)
|
|
This seems to work:
Add this to OnGUI(). I have it in a switch since I'm reacting to other events as well... You can debug log the commandName to get the name of the command you're interested in (that's how I found UndoRedoPerformed). EDIT: This method turns out to be unreliable since only the active window gets the event. IOW, if the user performs undo/redo with another window active, my EditorWindow never gets the event. It's sort of okay(-ish) for repaint since the editor window will repaint anyway when it gets focus again, but unfortunately I need to do some other stuff too (re-initialize some data). So if you need to intercept undo/redo reliably, this doesn't work. Internally it seems that unity uses an Undo callback, but it's not exposed for tool developers :(
(comments are locked)
|
|
I'll see what I can do about making EditorApplication.undoRedoPerformed public. If you want to go cowboy here, you can try it out by registering your own callback on that event trough reflection. I would never suggest you do this for runtime code, but for editorcode there is less risk. Please note that the reason we keep certain things internal are usually:
If you can live with those two constraints, give this a shot. See http://stackoverflow.com/questions/3120422/how-to-attach-event-handler-to-an-event-using-reflection for inspiration on how to register for events using reflection. PPS2: on every domain reload (when you press play), you will need to register your eventhandler again, events are not serialized by Unity. Thanks Lucas! I'll try attaching my own callback...
Nov 24 '10 at 02:18 PM
Alex Chouls
(comments are locked)
|
|
I didn't manage to grab the events from Note that I'm working with
(comments are locked)
|

How do I add a bounty to this question?! Poked all around the UI, am I missing something obvious?!
Never-mind, found the answer. Guess I need a minimum of 75 reputation to post a bounty... :(