Files
gymkhana-actions/addons/escoria-ui-simplemouse/verbs_mouseicons.gd
2022-03-07 16:28:18 +00:00

54 lines
1.4 KiB
GDScript

extends Control
var current_cursor_id: int = 0
onready var cursors: Array = $actions.get_children()
"""
This script is out of Escoria's scope. It controls the UI reaction to an
UI event (eg right click) to change the cursor accordingly.
"""
enum UI_ACTIONS_DIRECTION {
UP = 1,
DOWN = -1
}
func _ready():
if !Engine.is_editor_hint():
current_cursor_id = cursors.size()
iterate_actions_cursor(UI_ACTIONS_DIRECTION.UP)
func _process(delta):
$mouse_position.rect_global_position = get_global_mouse_position()
func iterate_actions_cursor(direction: int):
current_cursor_id += direction
if current_cursor_id > cursors.size() - 1:
current_cursor_id = 0
elif current_cursor_id < 0:
current_cursor_id = cursors.size() - 1
Input.set_custom_mouse_cursor(cursors[current_cursor_id].texture)
escoria.action_manager.set_current_action(cursors[current_cursor_id].name)
if $mouse_position/tool.texture != null:
clear_tool_texture()
func set_by_name(name: String) -> void:
for i in cursors.size():
if cursors[i].name == name:
current_cursor_id = i
break
Input.set_custom_mouse_cursor(cursors[current_cursor_id].texture)
escoria.action_manager.set_current_action(cursors[current_cursor_id].name)
func set_tool_texture(texture: Texture):
set_process(true)
$mouse_position/tool.texture = texture
func clear_tool_texture():
$mouse_position/tool.texture = null
set_process(false)