Trying to figure out why my teleportation code was being triggered twice when I was streaming earlier today. I built a test scene and observed the following (simplified):
func _on_body_entered(body):
print("entered")
teleport()
func _on_body_exited(body):
print("exited")
func teleport():
print("reparent")
self.reparent( ... )
print("global position")
self.global_position = ...
This results in the following output:
entered
reparent
exited
entered
global position
reparent
global position
exited
Since reparent
appears to result in a body entered and body exited callback, this ends up triggering the teleport code again.