Browse Source

Merge pull request #72626 from Sauermann/fix-remove-get-input-pre-xform

Remove `Viewport::_get_input_pre_xform`
Rémi Verschelde 2 years ago
parent
commit
1ed549e64b
4 changed files with 12 additions and 17 deletions
  1. 4 12
      scene/main/viewport.cpp
  2. 1 3
      scene/main/viewport.h
  3. 6 2
      scene/main/window.cpp
  4. 1 0
      scene/main/window.h

+ 4 - 12
scene/main/viewport.cpp

@@ -1052,7 +1052,7 @@ Camera2D *Viewport::get_camera_2d() const {
 }
 }
 
 
 Transform2D Viewport::get_final_transform() const {
 Transform2D Viewport::get_final_transform() const {
-	return _get_input_pre_xform().affine_inverse() * stretch_transform * global_canvas_transform;
+	return stretch_transform * global_canvas_transform;
 }
 }
 
 
 void Viewport::assign_next_enabled_camera_2d(const StringName &p_camera_group) {
 void Viewport::assign_next_enabled_camera_2d(const StringName &p_camera_group) {
@@ -1138,14 +1138,6 @@ Viewport::PositionalShadowAtlasQuadrantSubdiv Viewport::get_positional_shadow_at
 	return positional_shadow_atlas_quadrant_subdiv[p_quadrant];
 	return positional_shadow_atlas_quadrant_subdiv[p_quadrant];
 }
 }
 
 
-Transform2D Viewport::_get_input_pre_xform() const {
-	const Window *this_window = Object::cast_to<Window>(this);
-	if (this_window) {
-		return this_window->window_transform.affine_inverse();
-	}
-	return Transform2D();
-}
-
 Ref<InputEvent> Viewport::_make_input_local(const Ref<InputEvent> &ev) {
 Ref<InputEvent> Viewport::_make_input_local(const Ref<InputEvent> &ev) {
 	if (ev.is_null()) {
 	if (ev.is_null()) {
 		return ev; // No transformation defined for null event
 		return ev; // No transformation defined for null event
@@ -4207,7 +4199,7 @@ Transform2D SubViewport::get_screen_transform() const {
 	} else {
 	} else {
 		WARN_PRINT_ONCE("SubViewport is not a child of a SubViewportContainer. get_screen_transform doesn't return the actual screen position.");
 		WARN_PRINT_ONCE("SubViewport is not a child of a SubViewportContainer. get_screen_transform doesn't return the actual screen position.");
 	}
 	}
-	return container_transform * Viewport::get_screen_transform();
+	return container_transform * get_final_transform();
 }
 }
 
 
 Transform2D SubViewport::get_popup_base_transform() const {
 Transform2D SubViewport::get_popup_base_transform() const {
@@ -4216,13 +4208,13 @@ Transform2D SubViewport::get_popup_base_transform() const {
 	}
 	}
 	SubViewportContainer *c = Object::cast_to<SubViewportContainer>(get_parent());
 	SubViewportContainer *c = Object::cast_to<SubViewportContainer>(get_parent());
 	if (!c) {
 	if (!c) {
-		return Viewport::get_screen_transform();
+		return get_final_transform();
 	}
 	}
 	Transform2D container_transform;
 	Transform2D container_transform;
 	if (c->is_stretch_enabled()) {
 	if (c->is_stretch_enabled()) {
 		container_transform.scale(Vector2(c->get_stretch_shrink(), c->get_stretch_shrink()));
 		container_transform.scale(Vector2(c->get_stretch_shrink(), c->get_stretch_shrink()));
 	}
 	}
-	return c->get_screen_transform() * container_transform * Viewport::get_screen_transform();
+	return c->get_screen_transform() * container_transform * get_final_transform();
 }
 }
 
 
 void SubViewport::_notification(int p_what) {
 void SubViewport::_notification(int p_what) {

+ 1 - 3
scene/main/viewport.h

@@ -407,8 +407,6 @@ private:
 	void _perform_drop(Control *p_control = nullptr, Point2 p_pos = Point2());
 	void _perform_drop(Control *p_control = nullptr, Point2 p_pos = Point2());
 	void _gui_cleanup_internal_state(Ref<InputEvent> p_event);
 	void _gui_cleanup_internal_state(Ref<InputEvent> p_event);
 
 
-	_FORCE_INLINE_ Transform2D _get_input_pre_xform() const;
-
 	Ref<InputEvent> _make_input_local(const Ref<InputEvent> &ev);
 	Ref<InputEvent> _make_input_local(const Ref<InputEvent> &ev);
 
 
 	friend class Control;
 	friend class Control;
@@ -509,7 +507,7 @@ public:
 	void set_global_canvas_transform(const Transform2D &p_transform);
 	void set_global_canvas_transform(const Transform2D &p_transform);
 	Transform2D get_global_canvas_transform() const;
 	Transform2D get_global_canvas_transform() const;
 
 
-	Transform2D get_final_transform() const;
+	virtual Transform2D get_final_transform() const;
 	void assign_next_enabled_camera_2d(const StringName &p_camera_group);
 	void assign_next_enabled_camera_2d(const StringName &p_camera_group);
 
 
 	void gui_set_root_order_dirty();
 	void gui_set_root_order_dirty();

+ 6 - 2
scene/main/window.cpp

@@ -2115,13 +2115,17 @@ bool Window::is_auto_translating() const {
 	return auto_translate;
 	return auto_translate;
 }
 }
 
 
+Transform2D Window::get_final_transform() const {
+	return window_transform * stretch_transform * global_canvas_transform;
+}
+
 Transform2D Window::get_screen_transform() const {
 Transform2D Window::get_screen_transform() const {
 	Transform2D embedder_transform;
 	Transform2D embedder_transform;
 	if (_get_embedder()) {
 	if (_get_embedder()) {
 		embedder_transform.translate_local(get_position());
 		embedder_transform.translate_local(get_position());
 		embedder_transform = _get_embedder()->get_screen_transform() * embedder_transform;
 		embedder_transform = _get_embedder()->get_screen_transform() * embedder_transform;
 	}
 	}
-	return embedder_transform * Viewport::get_screen_transform();
+	return embedder_transform * get_final_transform();
 }
 }
 
 
 Transform2D Window::get_popup_base_transform() const {
 Transform2D Window::get_popup_base_transform() const {
@@ -2130,7 +2134,7 @@ Transform2D Window::get_popup_base_transform() const {
 	}
 	}
 	Transform2D popup_base_transform;
 	Transform2D popup_base_transform;
 	popup_base_transform.set_origin(get_position());
 	popup_base_transform.set_origin(get_position());
-	popup_base_transform *= Viewport::get_screen_transform();
+	popup_base_transform *= get_final_transform();
 	if (_get_embedder()) {
 	if (_get_embedder()) {
 		return _get_embedder()->get_popup_base_transform() * popup_base_transform;
 		return _get_embedder()->get_popup_base_transform() * popup_base_transform;
 	}
 	}

+ 1 - 0
scene/main/window.h

@@ -376,6 +376,7 @@ public:
 
 
 	//
 	//
 
 
+	virtual Transform2D get_final_transform() const override;
 	virtual Transform2D get_screen_transform() const override;
 	virtual Transform2D get_screen_transform() const override;
 	virtual Transform2D get_popup_base_transform() const override;
 	virtual Transform2D get_popup_base_transform() const override;