From d65455185a2e72bbbf5aaa8943643a49cd811fce Mon Sep 17 00:00:00 2001 From: krzycho Date: Sun, 21 Jun 2015 21:55:47 +0200 Subject: [PATCH 1/2] - added GDscript bidings for UndoRedo class mechanizm - registered UndoRedo --- core/undo_redo.cpp | 120 +++++++++++++++++++++++++++++++++++ core/undo_redo.h | 7 ++ doc/base/classes.xml | 2 +- tools/editor/editor_node.cpp | 1 + 4 files changed, 129 insertions(+), 1 deletion(-) diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index 5e7df3be7e6..a93e469f3fc 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -339,3 +339,123 @@ UndoRedo::~UndoRedo() { clear_history(); } + +Variant UndoRedo::_add_do_method(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { + + if (p_argcount<1) { + r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; + r_error.argument=0; + return Variant(); + } + + if (p_args[0]->get_type()!=Variant::OBJECT) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::OBJECT; + return Variant(); + } + + if (p_args[1]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=1; + r_error.expected=Variant::STRING; + return Variant(); + } + + r_error.error=Variant::CallError::CALL_OK; + + Object* object = *p_args[0]; + String method = *p_args[1]; + + Variant v[VARIANT_ARG_MAX]; + + + for(int i=0;iget_type()!=Variant::OBJECT) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::OBJECT; + return Variant(); + } + + if (p_args[1]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=1; + r_error.expected=Variant::STRING; + return Variant(); + } + + r_error.error=Variant::CallError::CALL_OK; + + Object* object = *p_args[0]; + String method = *p_args[1]; + + Variant v[VARIANT_ARG_MAX]; + + + for(int i=0;i defargs; + for(int i=0;i defargs; + for(int i=0;i - + diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 373c8aba737..ce96e0b6f53 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -3236,6 +3236,7 @@ void EditorNode::register_editor_types() { ObjectTypeDB::register_type(); ObjectTypeDB::register_type(); ObjectTypeDB::register_type(); + ObjectTypeDB::register_type(); //ObjectTypeDB::register_type(); From fafcc52d1cdf13a57fad613944109169b3be5594 Mon Sep 17 00:00:00 2001 From: krzycho Date: Mon, 22 Jun 2015 14:42:52 +0200 Subject: [PATCH 2/2] added some missing biddings --- core/undo_redo.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index a93e469f3fc..bb001c9f73a 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -458,4 +458,7 @@ void UndoRedo::_bind_methods() { ObjectTypeDB::bind_method(_MD("add_undo_property","object", "property", "value"),&UndoRedo::add_undo_property); ObjectTypeDB::bind_method(_MD("add_do_reference","object"),&UndoRedo::add_do_reference); ObjectTypeDB::bind_method(_MD("add_undo_reference","object"),&UndoRedo::add_undo_reference); + ObjectTypeDB::bind_method(_MD("clear_history"),&UndoRedo::clear_history); + ObjectTypeDB::bind_method(_MD("get_current_action_name"),&UndoRedo::get_current_action_name); + ObjectTypeDB::bind_method(_MD("get_version"),&UndoRedo::get_version); } \ No newline at end of file