diff options
author | Ignacio Etcheverry <neikeq@users.noreply.github.com> | 2017-08-06 07:26:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-06 07:26:49 +0200 |
commit | 97e942dd42ea5df241e1e81704eaa6c383f3c9b4 (patch) | |
tree | 857a65af3b8829fdcfe68182a1652ab1d7609ef0 /core/class_db.cpp | |
parent | 37adf936abf018bb8b643b589c07ac0f1a036f51 (diff) | |
parent | aee99ab59ff73f54dcf834d870432a62f17ccc82 (diff) | |
download | redot-engine-97e942dd42ea5df241e1e81704eaa6c383f3c9b4.tar.gz |
Merge pull request #10117 from neikeq/pr-classdb-getpropidx
ClassDB: Adds get_property_index method
Diffstat (limited to 'core/class_db.cpp')
-rw-r--r-- | core/class_db.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/class_db.cpp b/core/class_db.cpp index 6b8c290a99..24d71f86b0 100644 --- a/core/class_db.cpp +++ b/core/class_db.cpp @@ -937,6 +937,28 @@ bool ClassDB::get_property(Object *p_object, const StringName &p_property, Varia return false; } +int ClassDB::get_property_index(const StringName &p_class, const StringName &p_property, bool *r_is_valid) { + + ClassInfo *type = classes.getptr(p_class); + ClassInfo *check = type; + while (check) { + const PropertySetGet *psg = check->property_setget.getptr(p_property); + if (psg) { + + if (r_is_valid) + *r_is_valid = true; + + return psg->index; + } + + check = check->inherits_ptr; + } + if (r_is_valid) + *r_is_valid = false; + + return -1; +} + Variant::Type ClassDB::get_property_type(const StringName &p_class, const StringName &p_property, bool *r_is_valid) { ClassInfo *type = classes.getptr(p_class); |