Browse Source

Add _ClassDB.class_[g|s]et_property to ClassDB exposed methods

Emmanuel Leblond 8 years ago
parent
commit
23c310be7b
2 changed files with 21 additions and 0 deletions
  1. 19 0
      core/bind/core_bind.cpp
  2. 2 0
      core/bind/core_bind.h

+ 19 - 0
core/bind/core_bind.cpp

@@ -2366,6 +2366,23 @@ Array _ClassDB::get_property_list(StringName p_class, bool p_no_inheritance) con
 	return ret;
 }
 
+Variant _ClassDB::get_property(Object *p_object, const StringName &p_property) const {
+	Variant ret;
+	ClassDB::get_property(p_object, p_property, ret);
+	return ret;
+}
+
+Error _ClassDB::set_property(Object *p_object, const StringName &p_property, const Variant &p_value) const {
+	Variant ret;
+	bool valid;
+	if (!ClassDB::set_property(p_object, p_property, p_value, &valid)) {
+		return ERR_UNAVAILABLE;
+	} else if (!valid) {
+		return ERR_INVALID_DATA;
+	}
+	return OK;
+}
+
 bool _ClassDB::has_method(StringName p_class, StringName p_method, bool p_no_inheritance) const {
 
 	return ClassDB::has_method(p_class, p_method, p_no_inheritance);
@@ -2438,6 +2455,8 @@ void _ClassDB::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("class_get_signal_list", "class", "no_inheritance"), &_ClassDB::get_signal_list, DEFVAL(false));
 
 	ClassDB::bind_method(D_METHOD("class_get_property_list", "class", "no_inheritance"), &_ClassDB::get_property_list, DEFVAL(false));
+	ClassDB::bind_method(D_METHOD("class_get_property", "object", "property"), &_ClassDB::get_property);
+	ClassDB::bind_method(D_METHOD("class_set_property", "object", "property", "value"), &_ClassDB::set_property);
 
 	ClassDB::bind_method(D_METHOD("class_has_method", "class", "method", "no_inheritance"), &_ClassDB::has_method, DEFVAL(false));
 

+ 2 - 0
core/bind/core_bind.h

@@ -586,6 +586,8 @@ public:
 	Array get_signal_list(StringName p_class, bool p_no_inheritance = false) const;
 
 	Array get_property_list(StringName p_class, bool p_no_inheritance = false) const;
+	Variant get_property(Object *p_object, const StringName &p_property) const;
+	Error set_property(Object *p_object, const StringName &p_property, const Variant &p_value) const;
 
 	bool has_method(StringName p_class, StringName p_method, bool p_no_inheritance = false) const;