extends Area export var on_interact_func = "" export var on_enter_func = "" export var on_leave_func = "" export var call_string = "" export var call_array: Array = [] var cursor_is_touching = false func _ready(): var _err = GlobalCursorState.connect("cursor_interact", self, "check_interact") func call_with_value(func_name: String): if call_string: GlobalCursorState.call(func_name, call_string) elif call_array.size(): GlobalCursorState.call(func_name, call_array) else: GlobalCursorState.call(func_name) signal interact signal enter signal leave func check_interact(): if not cursor_is_touching: return emit_signal("interact") if on_interact_func: call_with_value(on_interact_func) func _on_CursorInteractArea_body_entered(body): if not GlobalCursorState.is_cursor_collision(body): return emit_signal("enter") cursor_is_touching = true if on_enter_func: call_with_value(on_enter_func) func _on_CursorInteractArea_body_exited(body): if not GlobalCursorState.is_cursor_collision(body): return emit_signal("leave") cursor_is_touching = false if on_leave_func: call_with_value(on_leave_func)