Hi,
You could try using a variable in an autoload script to keep track of which node you want active, and then set each nodes func _input() to only be active if that global variable says the node is active.
For example (quick pseudo code as on my phone);
If toggle_node is a button such as escape key.
In the autoload script (called Global.gd here);
var active_node = "3d"
func _input(event):
if Input.is_action_just_pressed("toggle_node")
if active_node == "3d":
active_node = "text"
elif active_node == "text":
active_node = "3d"
In 3d world node;
func _input(event):
if Global.active_node == "3d":
Normal controls for this node
else:
pass
In text editor node;
func _input(event):
if Global.active_node == "text":
Normal controls for this node
else:
pass
That's one way I can think of to control active bodes, but I have little experience with trying to achieve a setup such as yours, mine is mainly used for setting up menus and some UI elements.
Hope this helps.