PSwitcher.gd 774 B

12345678910111213141516171819202122232425262728
  1. class_name PSwitcher
  2. extends Node
  3. var enabled := true
  4. @export_file("*.tscn") var new_scene := ""
  5. @export var new_offset := Vector2.ZERO
  6. @export var properties := []
  7. var is_switched := false
  8. func _ready() -> void:
  9. Global.p_switch_toggle.connect(switch_to_other)
  10. if Global.p_switch_active and not is_switched:
  11. switch_to_other()
  12. func switch_to_other() -> void:
  13. if enabled == false: return
  14. if new_scene != "":
  15. var new = load(new_scene).instantiate()
  16. new.global_position = owner.global_position + new_offset
  17. if new.has_node("PSwitcher"):
  18. new.get_node("PSwitcher").new_scene = owner.scene_file_path
  19. new.get_node("PSwitcher").is_switched = true
  20. for i in properties:
  21. new.set(i, owner.get(i))
  22. owner.call_deferred("add_sibling", new)
  23. owner.queue_free()