From 645bc94bfcb0d494e9d53e29aee1419800adcd4e Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Thu, 12 Aug 2021 11:26:47 -0700 Subject: Fix capsule height/radius setters with linked properties Capsule height and radius setters can modify each other, rather than using clamping, to avoid cases where values are not set correctly when loading a scene (depending on the order of properties). Inspector undo/redo: Added the possibility to link properties together in the editor, so they can be undone together, for cases where a property can modify another one. Gizmo undo/redo: Capsule handles pass both radius and height values so they can be undone together. --- core/object/class_db.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'core/object/class_db.cpp') diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index c58fe7bc24..75145e1b65 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -1068,6 +1068,20 @@ void ClassDB::set_property_default_value(const StringName &p_class, const String default_values[p_class][p_name] = p_default; } +void ClassDB::add_linked_property(const StringName &p_class, const String &p_property, const String &p_linked_property) { +#ifdef TOOLS_ENABLED + OBJTYPE_WLOCK; + ClassInfo *type = classes.getptr(p_class); + ERR_FAIL_COND(!type); + + ERR_FAIL_COND(!type->property_map.has(p_property)); + ERR_FAIL_COND(!type->property_map.has(p_linked_property)); + + PropertyInfo &pinfo = type->property_map[p_property]; + pinfo.linked_properties.push_back(p_linked_property); +#endif +} + void ClassDB::get_property_list(const StringName &p_class, List *p_list, bool p_no_inheritance, const Object *p_validator) { OBJTYPE_RLOCK; -- cgit v1.2.3