You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 19:11:41 +00:00
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.
This commit is contained in:
@@ -50,12 +50,7 @@ Variant CollisionShape2DEditor::get_handle_value(int idx) const {
|
||||
switch (shape_type) {
|
||||
case CAPSULE_SHAPE: {
|
||||
Ref<CapsuleShape2D> capsule = node->get_shape();
|
||||
|
||||
if (idx == 0) {
|
||||
return capsule->get_radius();
|
||||
} else if (idx == 1) {
|
||||
return capsule->get_height();
|
||||
}
|
||||
return Vector2(capsule->get_radius(), capsule->get_height());
|
||||
|
||||
} break;
|
||||
|
||||
@@ -209,17 +204,17 @@ void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
|
||||
case CAPSULE_SHAPE: {
|
||||
Ref<CapsuleShape2D> capsule = node->get_shape();
|
||||
|
||||
Vector2 values = p_org;
|
||||
|
||||
if (idx == 0) {
|
||||
undo_redo->add_do_method(capsule.ptr(), "set_radius", capsule->get_radius());
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->add_undo_method(capsule.ptr(), "set_radius", p_org);
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
} else if (idx == 1) {
|
||||
undo_redo->add_do_method(capsule.ptr(), "set_height", capsule->get_height());
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->add_undo_method(capsule.ptr(), "set_height", p_org);
|
||||
undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
|
||||
}
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->add_undo_method(capsule.ptr(), "set_radius", values[0]);
|
||||
undo_redo->add_undo_method(capsule.ptr(), "set_height", values[1]);
|
||||
undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
|
||||
|
||||
} break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user