From b3616089fad2d113626c22f14034ae52b3eecb68 Mon Sep 17 00:00:00 2001 From: Ariel Manzur Date: Tue, 8 Nov 2016 17:40:46 -0300 Subject: [PATCH] adding get_stored_values method changed order name (cherry picked from commit dbca4ee3fe283f59a8c9d50aae73b97f48be7b01) --- scene/main/instance_placeholder.cpp | 19 ++++++++++++++++++- scene/main/instance_placeholder.h | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp index fb047ea5e49..15045a73d55 100644 --- a/scene/main/instance_placeholder.cpp +++ b/scene/main/instance_placeholder.cpp @@ -101,11 +101,28 @@ void InstancePlaceholder::replace_by_instance(const Ref &p_custom_s base->remove_child(this); base->add_child(scene); base->move_child(scene,pos); - } +Dictionary InstancePlaceholder::get_stored_values(bool p_with_order) { + + Dictionary ret; + StringArray order; + + for(List::Element *E=stored_values.front();E;E=E->next()) { + ret[E->get().name] = E->get().value; + if (p_with_order) + order.push_back(E->get().name); + }; + + if (p_with_order) + ret[".order"] = order; + + return ret; +}; + void InstancePlaceholder::_bind_methods() { + ObjectTypeDB::bind_method(_MD("get_stored_values","with_order"),&InstancePlaceholder::get_stored_values,DEFVAL(false)); ObjectTypeDB::bind_method(_MD("replace_by_instance","custom_scene:PackedScene"),&InstancePlaceholder::replace_by_instance,DEFVAL(Variant())); ObjectTypeDB::bind_method(_MD("get_instance_path"),&InstancePlaceholder::get_instance_path); } diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h index ef76686196c..cacba49b39a 100644 --- a/scene/main/instance_placeholder.h +++ b/scene/main/instance_placeholder.h @@ -57,6 +57,8 @@ public: void set_instance_path(const String& p_name); String get_instance_path() const; + Dictionary get_stored_values(bool p_with_order = false); + void replace_by_instance(const Ref& p_custom_scene=Ref()); InstancePlaceholder();