You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Object: Add usage hint to instantiate Object properties in editor
Fixes #36372 as Path2D/Path3D's `curve` property no longer uses a Curve instance as default value, but instead it gets a (unique) default Curve instance when created through the editor (CreateDialog). ClassDB gets a sanity check to ensure that we don't do the same mistake for other properties in the future, but instead use the dedicated property usage hint. Fixes #36372. Fixes #36650. Supersedes #36644 and #36656. Co-authored-by: Thakee Nathees <thakeenathees@gmail.com> Co-authored-by: simpuid <utkarsh.email@yahoo.com>
This commit is contained in:
@@ -1386,7 +1386,23 @@ Variant ClassDB::class_get_default_property_value(const StringName &p_class, con
|
||||
if (r_valid != nullptr) {
|
||||
*r_valid = true;
|
||||
}
|
||||
return default_values[p_class][p_property];
|
||||
|
||||
Variant var = default_values[p_class][p_property];
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
// Some properties may have an instantiated Object as default value,
|
||||
// (like Path2D's `curve` used to have), but that's not a good practice.
|
||||
// Instead, those properties should use PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT
|
||||
// to be auto-instantiated when created in the editor.
|
||||
if (var.get_type() == Variant::OBJECT) {
|
||||
Object *obj = var.get_validated_object();
|
||||
if (obj) {
|
||||
WARN_PRINT(vformat("Instantiated %s used as default value for %s's \"%s\" property.", obj->get_class(), p_class, p_property));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return var;
|
||||
}
|
||||
|
||||
RWLock *ClassDB::lock = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user