Browse Source

Merge pull request #92992 from KoBeWi/buy_a_new_camera_every_time_project_settings_change

Update Camera2D gizmos when screen size changes
Rémi Verschelde 1 năm trước cách đây
mục cha
commit
b29723444a
2 tập tin đã thay đổi với 19 bổ sung0 xóa
  1. 16 0
      scene/2d/camera_2d.cpp
  2. 3 0
      scene/2d/camera_2d.h

+ 16 - 0
scene/2d/camera_2d.cpp

@@ -74,6 +74,14 @@ void Camera2D::_update_scroll() {
 	}
 }
 
+#ifdef TOOLS_ENABLED
+void Camera2D::_project_settings_changed() {
+	if (screen_drawing_enabled) {
+		queue_redraw();
+	}
+}
+#endif
+
 void Camera2D::_update_process_callback() {
 	if (is_physics_interpolated_and_enabled()) {
 		set_process_internal(is_current());
@@ -267,6 +275,14 @@ void Camera2D::_ensure_update_interpolation_data() {
 
 void Camera2D::_notification(int p_what) {
 	switch (p_what) {
+#ifdef TOOLS_ENABLED
+		case NOTIFICATION_READY: {
+			if (Engine::get_singleton()->is_editor_hint() && is_part_of_edited_scene()) {
+				ProjectSettings::get_singleton()->connect(SNAME("settings_changed"), callable_mp(this, &Camera2D::_project_settings_changed));
+			}
+		} break;
+#endif
+
 		case NOTIFICATION_INTERNAL_PROCESS: {
 			_update_scroll();
 		} break;

+ 3 - 0
scene/2d/camera_2d.h

@@ -88,6 +88,9 @@ protected:
 	bool _is_editing_in_editor() const;
 	void _update_process_callback();
 	void _update_scroll();
+#ifdef TOOLS_ENABLED
+	void _project_settings_changed();
+#endif
 
 	void _make_current(Object *p_which);
 	void _reset_just_exited() { just_exited_tree = false; }