-Moved EditorDefaultValue to ClassDB, made it core

-Removed one and zero hints for properties, replaced by default value
This commit is contained in:
Juan Linietsky
2018-11-08 11:30:02 -03:00
parent e7cb47e686
commit f2e54057ae
53 changed files with 303 additions and 323 deletions

View File

@ -1367,6 +1367,41 @@ void ClassDB::get_extensions_for_type(const StringName &p_class, List<String> *p
}
}
HashMap<StringName, HashMap<StringName, Variant> > ClassDB::default_values;
Variant ClassDB::class_get_default_property_value(const StringName &p_class, const StringName &p_property) {
if (!default_values.has(p_class)) {
default_values[p_class] = HashMap<StringName, Variant>();
if (ClassDB::can_instance(p_class)) {
Object *c = ClassDB::instance(p_class);
List<PropertyInfo> plist;
c->get_property_list(&plist);
for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
if (E->get().usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR)) {
Variant v = c->get(E->get().name);
default_values[p_class][E->get().name] = v;
}
}
memdelete(c);
}
}
if (!default_values.has(p_class)) {
return Variant();
}
if (!default_values[p_class].has(p_property)) {
return Variant();
}
return default_values[p_class][p_property];
}
RWLock *ClassDB::lock = NULL;
void ClassDB::init() {
@ -1393,6 +1428,7 @@ void ClassDB::cleanup() {
classes.clear();
resource_base_extensions.clear();
compat_classes.clear();
default_values.clear();
memdelete(lock);
}