aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky2016-01-23 21:42:15 -0300
committerJuan Linietsky2016-01-23 21:42:15 -0300
commita74138a0dc5862d2c26eb78a141ba3c3f9d01c6d (patch)
treeb813df7f8b217100fcf71dcf06eec58fe2b7354e /core
parent6c27df8df609337867c108c5adb66174393e190b (diff)
downloadgodot-a74138a0dc5862d2c26eb78a141ba3c3f9d01c6d.tar.gz
godot-a74138a0dc5862d2c26eb78a141ba3c3f9d01c6d.tar.zst
godot-a74138a0dc5862d2c26eb78a141ba3c3f9d01c6d.zip
Diffstat (limited to 'core')
-rw-r--r--core/script_language.cpp16
-rw-r--r--core/script_language.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/core/script_language.cpp b/core/script_language.cpp
index 2ce3844ba..0eac39e7d 100644
--- a/core/script_language.cpp
+++ b/core/script_language.cpp
@@ -92,6 +92,22 @@ void ScriptServer::init_languages() {
}
}
+void ScriptInstance::get_property_state(List<Pair<StringName, Variant> > &state) {
+
+ List<PropertyInfo> pinfo;
+ get_property_list(&pinfo);
+ for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) {
+
+ if (E->get().usage&PROPERTY_USAGE_STORAGE) {
+ Pair<StringName,Variant> p;
+ p.first=E->get().name;
+ if (get(p.first,p.second))
+ state.push_back(p);
+ }
+ }
+}
+
+
Variant ScriptInstance::call(const StringName& p_method,VARIANT_ARG_DECLARE) {
VARIANT_ARGPTRS;
diff --git a/core/script_language.h b/core/script_language.h
index 3138c88e8..7e278b855 100644
--- a/core/script_language.h
+++ b/core/script_language.h
@@ -113,6 +113,8 @@ public:
virtual void get_property_list(List<PropertyInfo> *p_properties) const=0;
virtual Variant::Type get_property_type(const StringName& p_name,bool *r_is_valid=NULL) const=0;
+ virtual void get_property_state(List<Pair<StringName,Variant> > &state);
+
virtual void get_method_list(List<MethodInfo> *p_list) const=0;
virtual bool has_method(const StringName& p_method) const=0;
virtual Variant call(const StringName& p_method,VARIANT_ARG_LIST);