terrain-editor/modules/terrain_editor/edit_history.h

28 lines
685 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();
private:
size_t undo_count{ 0 };
Vector<EditAction> history{};
};