-Moved EditorDefaultValue to ClassDB, made it core
-Removed one and zero hints for properties, replaced by default value
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user