From 45ea274ac0892b817c1bcf781dc89920728596d1 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Sun, 14 Sep 2025 23:39:43 -0700 Subject: [PATCH] Fix Projection values being displayed transposed in the inspector --- editor/inspector/editor_properties.cpp | 54 +++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/editor/inspector/editor_properties.cpp b/editor/inspector/editor_properties.cpp index c1dd6248d724..f47ec5d745f4 100644 --- a/editor/inspector/editor_properties.cpp +++ b/editor/inspector/editor_properties.cpp @@ -2829,20 +2829,20 @@ void EditorPropertyProjection::_set_read_only(bool p_read_only) { void EditorPropertyProjection::_value_changed(double val, const String &p_name) { Projection p; p.columns[0][0] = spin[0]->get_value(); - p.columns[0][1] = spin[1]->get_value(); - p.columns[0][2] = spin[2]->get_value(); - p.columns[0][3] = spin[3]->get_value(); - p.columns[1][0] = spin[4]->get_value(); + p.columns[1][0] = spin[1]->get_value(); + p.columns[2][0] = spin[2]->get_value(); + p.columns[3][0] = spin[3]->get_value(); + p.columns[0][1] = spin[4]->get_value(); p.columns[1][1] = spin[5]->get_value(); - p.columns[1][2] = spin[6]->get_value(); - p.columns[1][3] = spin[7]->get_value(); - p.columns[2][0] = spin[8]->get_value(); - p.columns[2][1] = spin[9]->get_value(); + p.columns[2][1] = spin[6]->get_value(); + p.columns[3][1] = spin[7]->get_value(); + p.columns[0][2] = spin[8]->get_value(); + p.columns[1][2] = spin[9]->get_value(); p.columns[2][2] = spin[10]->get_value(); - p.columns[2][3] = spin[11]->get_value(); - p.columns[3][0] = spin[12]->get_value(); - p.columns[3][1] = spin[13]->get_value(); - p.columns[3][2] = spin[14]->get_value(); + p.columns[3][2] = spin[11]->get_value(); + p.columns[0][3] = spin[12]->get_value(); + p.columns[1][3] = spin[13]->get_value(); + p.columns[2][3] = spin[14]->get_value(); p.columns[3][3] = spin[15]->get_value(); emit_changed(get_edited_property(), p, p_name); @@ -2854,20 +2854,20 @@ void EditorPropertyProjection::update_property() { void EditorPropertyProjection::update_using_transform(Projection p_transform) { spin[0]->set_value_no_signal(p_transform.columns[0][0]); - spin[1]->set_value_no_signal(p_transform.columns[0][1]); - spin[2]->set_value_no_signal(p_transform.columns[0][2]); - spin[3]->set_value_no_signal(p_transform.columns[0][3]); - spin[4]->set_value_no_signal(p_transform.columns[1][0]); + spin[1]->set_value_no_signal(p_transform.columns[1][0]); + spin[2]->set_value_no_signal(p_transform.columns[2][0]); + spin[3]->set_value_no_signal(p_transform.columns[3][0]); + spin[4]->set_value_no_signal(p_transform.columns[0][1]); spin[5]->set_value_no_signal(p_transform.columns[1][1]); - spin[6]->set_value_no_signal(p_transform.columns[1][2]); - spin[7]->set_value_no_signal(p_transform.columns[1][3]); - spin[8]->set_value_no_signal(p_transform.columns[2][0]); - spin[9]->set_value_no_signal(p_transform.columns[2][1]); + spin[6]->set_value_no_signal(p_transform.columns[2][1]); + spin[7]->set_value_no_signal(p_transform.columns[3][1]); + spin[8]->set_value_no_signal(p_transform.columns[0][2]); + spin[9]->set_value_no_signal(p_transform.columns[1][2]); spin[10]->set_value_no_signal(p_transform.columns[2][2]); - spin[11]->set_value_no_signal(p_transform.columns[2][3]); - spin[12]->set_value_no_signal(p_transform.columns[3][0]); - spin[13]->set_value_no_signal(p_transform.columns[3][1]); - spin[14]->set_value_no_signal(p_transform.columns[3][2]); + spin[11]->set_value_no_signal(p_transform.columns[3][2]); + spin[12]->set_value_no_signal(p_transform.columns[0][3]); + spin[13]->set_value_no_signal(p_transform.columns[1][3]); + spin[14]->set_value_no_signal(p_transform.columns[2][3]); spin[15]->set_value_no_signal(p_transform.columns[3][3]); } @@ -2892,9 +2892,9 @@ void EditorPropertyProjection::setup(const EditorPropertyRangeHint &p_range_hint } spin[i]->set_allow_greater(true); spin[i]->set_allow_lesser(true); - if (i % 4 == 3) { - spin[i]->set_suffix(p_range_hint.suffix); - } + // Projection is inherently unitless, however someone may want to use it as + // a generic way to store 16 values, so we'll still respect the suffix. + spin[i]->set_suffix(p_range_hint.suffix); } }