EditorSelectorScroller.gd 858 B

123456789101112131415161718192021222324252627282930313233
  1. class_name EditorSelectorScroller
  2. extends Control
  3. @export var selected_index := 0
  4. var selectors: Array[Control] = []
  5. func _ready() -> void:
  6. for i in get_children():
  7. if i is EditorTileSelector:
  8. selectors.append(i)
  9. func _process(_delta: float) -> void:
  10. handle_inputs()
  11. for i in selectors.size():
  12. selectors[i].visible = i == selected_index
  13. selectors[i].notification(NOTIFICATION_MOUSE_ENTER)
  14. func handle_inputs() -> void:
  15. var hovered = false
  16. for i in selectors:
  17. if i.get_node("Button").is_hovered():
  18. hovered = true
  19. break
  20. if not hovered:
  21. return
  22. if Input.is_action_just_pressed("scroll_up"):
  23. selected_index += 1
  24. warp_mouse(get_local_mouse_position())
  25. if Input.is_action_just_pressed("scroll_down"):
  26. selected_index -= 1
  27. warp_mouse(get_local_mouse_position())
  28. selected_index = clamp(selected_index, 0, selectors.size() - 1)