Helper to manage UndoRedo in the editor or custom tools.
|Variant||add_do_method ( Object object, String method ) vararg|
|void||add_do_property ( Object object, String property, Variant value )|
|void||add_do_reference ( Object object )|
|Variant||add_undo_method ( Object object, String method ) vararg|
|void||add_undo_property ( Object object, String property, Variant value )|
|void||add_undo_reference ( Object object )|
|void||clear_history ( )|
|void||commit_action ( )|
|void||create_action ( String name, MergeMode merge_mode=0 )|
|String||get_current_action_name ( ) const|
|int||get_version ( ) const|
|bool||redo ( )|
|bool||undo ( )|
- MERGE_DISABLE = 0
- MERGE_ENDS = 1
- MERGE_ALL = 2
Helper to manage UndoRedo in the editor or custom tools. It works by registering methods and property changes inside ‘actions’.
Common behavior is to create an action, then add do/undo calls to functions or property changes, then committing the action.
Here’s an example on how to add an action to Godot editor’s own ‘undoredo’:
var undoredo = get_undo_redo() # method of EditorPlugin func do_something(): pass # put your code here func undo_something(): pass # put here the code that reverts what's done by "do_something()" func _on_MyButton_pressed(): var node = get_node("MyNode2D") undoredo.create_action("Move the node") undoredo.add_do_method(self, "do_something") undoredo.add_undo_method(self, "undo_something") undoredo.add_do_property(node, "position", Vector2(100,100)) undoredo.add_undo_property(node, "position", node.position) undoredo.commit_action()
Register a method that will be called when the action is committed.
Register a property value change for ‘do’.
- void add_do_reference ( Object object )
Register a reference for ‘do’ that will be erased if the ‘do’ history is lost. This is useful mostly for new nodes created for the ‘do’ call. Do not use for resources.
Register a method that will be called when the action is undone.
Register a property value change for ‘undo’.
- void add_undo_reference ( Object object )
Register a reference for ‘undo’ that will be erased if the ‘undo’ history is lost. This is useful mostly for nodes removed with the ‘do’ call (not the ‘undo’ call!).
- void clear_history ( )
Clear the undo/redo history and associated references.
- void commit_action ( )
Commit the action. All ‘do’ methods/properties are called/set when this function is called.
- String get_current_action_name ( ) const
Get the name of the current action.
- int get_version ( ) const
Get the version, each time a new action is committed, the version number of the UndoRedo is increased automatically.
This is useful mostly to check if something changed from a saved version.
- bool redo ( )
Redo last action.
- bool undo ( )
Undo last action.