29 lines
708 B
C++
29 lines
708 B
C++
#pragma once
|
|
|
|
#include "core/object/class_db.h"
|
|
#include "core/object/object.h"
|
|
#include "core/variant/callable.h"
|
|
#include "terrain_editor/register_types.h"
|
|
|
|
class EditHistory : public Object {
|
|
GDCLASS(EditHistory, Object);
|
|
static void _bind_methods();
|
|
static EditHistory *singleton_instance;
|
|
friend void initialize_terrain_editor_module(ModuleInitializationLevel p_level);
|
|
struct EditAction {
|
|
Callable do_action;
|
|
Callable undo_action;
|
|
};
|
|
|
|
public:
|
|
static EditHistory *get_singleton() { return singleton_instance; }
|
|
void push_action(Callable do_action, Callable undo_action);
|
|
void undo();
|
|
void redo();
|
|
void clear_history();
|
|
|
|
private:
|
|
size_t undo_count{ 0 };
|
|
Vector<EditAction> history{};
|
|
};
|