diff options
Diffstat (limited to 'editor/array_property_edit.cpp')
-rw-r--r-- | editor/array_property_edit.cpp | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp index 8cbc6a8dff..20f947e707 100644 --- a/editor/array_property_edit.cpp +++ b/editor/array_property_edit.cpp @@ -36,14 +36,14 @@ #define ITEMS_PER_PAGE 100 Variant ArrayPropertyEdit::get_array() const { - Object *o = ObjectDB::get_instance(obj); - if (!o) + if (!o) { return Array(); + } Variant arr = o->get(property); if (!arr.is_array()) { - Variant::CallError ce; - arr = Variant::construct(default_type, NULL, 0, ce); + Callable::CallError ce; + arr = Variant::construct(default_type, nullptr, 0, ce); } return arr; } @@ -51,47 +51,45 @@ Variant ArrayPropertyEdit::get_array() const { void ArrayPropertyEdit::_notif_change() { _change_notify(); } -void ArrayPropertyEdit::_notif_changev(const String &p_v) { +void ArrayPropertyEdit::_notif_changev(const String &p_v) { _change_notify(p_v.utf8().get_data()); } void ArrayPropertyEdit::_set_size(int p_size) { - Variant arr = get_array(); arr.call("resize", p_size); Object *o = ObjectDB::get_instance(obj); - if (!o) + if (!o) { return; + } o->set(property, arr); } void ArrayPropertyEdit::_set_value(int p_idx, const Variant &p_value) { - Variant arr = get_array(); arr.set(p_idx, p_value); Object *o = ObjectDB::get_instance(obj); - if (!o) + if (!o) { return; + } o->set(property, arr); } bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { - String pn = p_name; if (pn.begins_with("array/")) { - if (pn == "array/size") { - Variant arr = get_array(); int size = arr.call("size"); int newsize = p_value; - if (newsize == size) + if (newsize == size) { return true; + } UndoRedo *ur = EditorNode::get_undo_redo(); ur->create_action(TTR("Resize Array")); @@ -102,15 +100,14 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { ur->add_undo_method(this, "_set_value", i, arr.get(i)); } } else if (newsize > size) { - Variant init; - Variant::CallError ce; + Callable::CallError ce; Variant::Type new_type = subtype; if (new_type == Variant::NIL && size) { new_type = arr.get(size - 1).get_type(); } if (new_type != Variant::NIL) { - init = Variant::construct(new_type, NULL, 0, ce); + init = Variant::construct(new_type, nullptr, 0, ce); for (int i = size; i < newsize; i++) { ur->add_do_method(this, "_set_value", i, init); } @@ -128,7 +125,6 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { } } else if (pn.begins_with("indices")) { - if (pn.find("_") != -1) { //type int idx = pn.get_slicec('/', 1).get_slicec('_', 0).to_int(); @@ -139,8 +135,8 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { Variant value = arr.get(idx); if (value.get_type() != type && type >= 0 && type < Variant::VARIANT_MAX) { - Variant::CallError ce; - Variant new_value = Variant::construct(Variant::Type(type), NULL, 0, ce); + Callable::CallError ce; + Variant new_value = Variant::construct(Variant::Type(type), nullptr, 0, ce); UndoRedo *ur = EditorNode::get_undo_redo(); ur->create_action(TTR("Change Array Value Type")); @@ -173,13 +169,11 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { } bool ArrayPropertyEdit::_get(const StringName &p_name, Variant &r_ret) const { - Variant arr = get_array(); //int size = arr.call("size"); String pn = p_name; if (pn.begins_with("array/")) { - if (pn == "array/size") { r_ret = arr.call("size"); return true; @@ -189,14 +183,14 @@ bool ArrayPropertyEdit::_get(const StringName &p_name, Variant &r_ret) const { return true; } } else if (pn.begins_with("indices")) { - if (pn.find("_") != -1) { //type int idx = pn.get_slicec('/', 1).get_slicec('_', 0).to_int(); bool valid; r_ret = arr.get(idx, &valid); - if (valid) + if (valid) { r_ret = r_ret.get_type(); + } return valid; } else { @@ -216,21 +210,20 @@ bool ArrayPropertyEdit::_get(const StringName &p_name, Variant &r_ret) const { } void ArrayPropertyEdit::_get_property_list(List<PropertyInfo> *p_list) const { - Variant arr = get_array(); int size = arr.call("size"); p_list->push_back(PropertyInfo(Variant::INT, "array/size", PROPERTY_HINT_RANGE, "0,100000,1")); int pages = size / ITEMS_PER_PAGE; - if (pages > 0) + if (pages > 0) { p_list->push_back(PropertyInfo(Variant::INT, "array/page", PROPERTY_HINT_RANGE, "0," + itos(pages) + ",1")); + } int offset = page * ITEMS_PER_PAGE; int items = MIN(size - offset, ITEMS_PER_PAGE); for (int i = 0; i < items; i++) { - Variant v = arr.get(i + offset); bool is_typed = arr.get_type() != Variant::ARRAY || subtype != Variant::NIL; @@ -260,7 +253,6 @@ void ArrayPropertyEdit::_get_property_list(List<PropertyInfo> *p_list) const { } void ArrayPropertyEdit::edit(Object *p_obj, const StringName &p_prop, const String &p_hint_string, Variant::Type p_deftype) { - page = 0; property = p_prop; obj = p_obj->get_instance_id(); @@ -284,7 +276,6 @@ void ArrayPropertyEdit::edit(Object *p_obj, const StringName &p_prop, const Stri } Node *ArrayPropertyEdit::get_node() { - return Object::cast_to<Node>(ObjectDB::get_instance(obj)); } @@ -293,7 +284,6 @@ bool ArrayPropertyEdit::_dont_undo_redo() { } void ArrayPropertyEdit::_bind_methods() { - ClassDB::bind_method(D_METHOD("_set_size"), &ArrayPropertyEdit::_set_size); ClassDB::bind_method(D_METHOD("_set_value"), &ArrayPropertyEdit::_set_value); ClassDB::bind_method(D_METHOD("_notif_change"), &ArrayPropertyEdit::_notif_change); @@ -304,9 +294,9 @@ void ArrayPropertyEdit::_bind_methods() { ArrayPropertyEdit::ArrayPropertyEdit() { page = 0; for (int i = 0; i < Variant::VARIANT_MAX; i++) { - - if (i > 0) + if (i > 0) { vtypes += ","; + } vtypes += Variant::get_type_name(Variant::Type(i)); } default_type = Variant::NIL; |