Переглянути джерело

Added add_property_info function to Globals and EditorSettings classes

(cherry picked from commit 9f242ed6e553df947c3696be5f23cd06649deab0)
Franklin Sobrinho 9 роки тому
батько
коміт
5f9e6d2b48
4 змінених файлів з 45 додано та 0 видалено
  1. 20 0
      core/globals.cpp
  2. 2 0
      core/globals.h
  3. 21 0
      tools/editor/editor_settings.cpp
  4. 2 0
      tools/editor/editor_settings.h

+ 20 - 0
core/globals.cpp

@@ -1375,6 +1375,25 @@ Vector<String> Globals::get_optimizer_presets() const {
 
 }
 
+void Globals::_add_property_info_bind(const Dictionary& p_info) {
+
+	ERR_FAIL_COND(!p_info.has("name"));
+	ERR_FAIL_COND(!p_info.has("type"));
+
+	PropertyInfo pinfo;
+	pinfo.name = p_info["name"];
+	ERR_FAIL_COND(!props.has(pinfo.name));
+	pinfo.type = Variant::Type(p_info["type"].operator int());
+	ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX);
+
+	if (p_info.has("hint"))
+		pinfo.hint = PropertyHint(p_info["hint"].operator int());
+	if (p_info.has("hint_string"))
+		pinfo.hint_string = p_info["hint_string"];
+
+	set_custom_property_info(pinfo.name, pinfo);
+}
+
 void Globals::set_custom_property_info(const String& p_prop,const PropertyInfo& p_info) {
 
 	ERR_FAIL_COND(!props.has(p_prop));
@@ -1399,6 +1418,7 @@ void Globals::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("get_order","name"),&Globals::get_order);
 	ObjectTypeDB::bind_method(_MD("set_persisting","name","enable"),&Globals::set_persisting);
 	ObjectTypeDB::bind_method(_MD("is_persisting","name"),&Globals::is_persisting);
+	ObjectTypeDB::bind_method(_MD("add_property_info", "hint"),&Globals::_add_property_info_bind);
 	ObjectTypeDB::bind_method(_MD("clear","name"),&Globals::clear);
 	ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path);
 	ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path);

+ 2 - 0
core/globals.h

@@ -96,6 +96,8 @@ protected:
 
 	bool _load_resource_pack(const String& p_pack);
 
+	void _add_property_info_bind(const Dictionary& p_info);
+
 protected:
 
 	static void _bind_methods();

+ 21 - 0
tools/editor/editor_settings.cpp

@@ -736,6 +736,25 @@ void EditorSettings::notify_changes() {
 
 }
 
+void EditorSettings::_add_property_info_bind(const Dictionary& p_info) {
+
+	ERR_FAIL_COND(!p_info.has("name"));
+	ERR_FAIL_COND(!p_info.has("type"));
+
+	PropertyInfo pinfo;
+	pinfo.name = p_info["name"];
+	ERR_FAIL_COND(!props.has(pinfo.name));
+	pinfo.type = Variant::Type(p_info["type"].operator int());
+	ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX);
+
+	if (p_info.has("hint"))
+		pinfo.hint = PropertyHint(p_info["hint"].operator int());
+	if (p_info.has("hint_string"))
+		pinfo.hint_string = p_info["hint_string"];
+
+	add_property_hint(pinfo);
+}
+
 void EditorSettings::add_property_hint(const PropertyInfo& p_hint) {
 
 	_THREAD_SAFE_METHOD_
@@ -1004,6 +1023,8 @@ void EditorSettings::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("get_settings_path"),&EditorSettings::get_settings_path);
 	ObjectTypeDB::bind_method(_MD("get_project_settings_path"),&EditorSettings::get_project_settings_path);
 
+	ObjectTypeDB::bind_method(_MD("add_property_info", "info"),&EditorSettings::_add_property_info_bind);
+
 	ObjectTypeDB::bind_method(_MD("set_favorite_dirs","dirs"),&EditorSettings::set_favorite_dirs);
 	ObjectTypeDB::bind_method(_MD("get_favorite_dirs"),&EditorSettings::get_favorite_dirs);
 

+ 2 - 0
tools/editor/editor_settings.h

@@ -104,6 +104,8 @@ private:
 
 	Map<String,Ref<ShortCut> > shortcuts;
 
+	void _add_property_info_bind(const Dictionary& p_info);
+
 protected:
 
 	static void _bind_methods();