diff options
| author | Ignacio Etcheverry | 2017-08-06 07:26:49 +0200 |
|---|---|---|
| committer | GitHub | 2017-08-06 07:26:49 +0200 |
| commit | 97e942dd42ea5df241e1e81704eaa6c383f3c9b4 (patch) | |
| tree | 857a65af3b8829fdcfe68182a1652ab1d7609ef0 /core/class_db.cpp | |
| parent | 37adf936abf018bb8b643b589c07ac0f1a036f51 (diff) | |
| parent | aee99ab59ff73f54dcf834d870432a62f17ccc82 (diff) | |
| download | godot-97e942dd42ea5df241e1e81704eaa6c383f3c9b4.tar.gz godot-97e942dd42ea5df241e1e81704eaa6c383f3c9b4.tar.zst godot-97e942dd42ea5df241e1e81704eaa6c383f3c9b4.zip | |
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 6b8c290a9..24d71f86b 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); |
