Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node2D global_position does not update when set before it's added to the scene tree #79453

Closed
mxteries opened this issue Jul 14, 2023 · 1 comment · Fixed by #80105
Closed

Comments

@mxteries
Copy link

Godot version

4.1 stable, 4.1.1 rc1

System information

Windows 10, Forward +

Issue description

When updating the global_position of a Node2D that's outside of the scene tree, the global_position does not update. I came across this issue because when I instantiate a scene, I usually set the instantiated object's properties before adding it to the scene tree. When I tried setting the global_position, I noticed the value seems to stay at (0,0). Interestingly, even though the global_position does not update, the position property does. Is it fine to update a node's (global) position when it's not inside the scene tree? Or should we not do this

Also possibly related to #75676

Steps to reproduce

extends Node

func _ready() -> void:
	var a = Node2D.new()
	a.global_position = Vector2(1, 1)
	assert(a.global_position == Vector2(1, 1))

The above assertion fails on 4.1 stable and 4.1.1 rc1, but succeeds on 4.0.2 and 4.0.3. I didn't test other versions besides these

Minimal reproduction project

N/A

@kleonc
Copy link
Member

kleonc commented Jul 14, 2023

Broken between v4.1.dev2.official [668cf3c] and v4.1.dev3.official [a67d37f]. So likely a regression from #77000 or #77145.
(we should probably add tests against such regressions when fixing it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants