class_name MousePointer extends RefCounted ## Übersetzt Maus und Esc-Taste in PointerEvent. Die rechte Maustaste fehlt ## absichtlich: sie gehört dem Freelook-Flug (orbit_camera.gd). static func from_input(event: InputEvent) -> PointerEvent: if event is InputEventMouseMotion: var mm := event as InputEventMouseMotion var p := PointerEvent.make(PointerEvent.Kind.MOVE, mm.position) p.shift = mm.shift_pressed p.ctrl = mm.ctrl_pressed p.command = mm.is_command_or_control_pressed() p.pressure = mm.pressure return p if event is InputEventMouseButton: var mb := event as InputEventMouseButton var kind := PointerEvent.Kind.MOVE var scroll := 0 match mb.button_index: MOUSE_BUTTON_LEFT: kind = PointerEvent.Kind.PRESS if mb.pressed else PointerEvent.Kind.RELEASE MOUSE_BUTTON_WHEEL_UP, MOUSE_BUTTON_WHEEL_DOWN: if not mb.pressed: return null kind = PointerEvent.Kind.SCROLL scroll = 1 if mb.button_index == MOUSE_BUTTON_WHEEL_UP else -1 _: return null var p := PointerEvent.make(kind, mb.position) p.shift = mb.shift_pressed p.ctrl = mb.ctrl_pressed p.command = mb.is_command_or_control_pressed() p.scroll = scroll return p if event is InputEventKey and (event as InputEventKey).pressed \ and (event as InputEventKey).keycode == KEY_ESCAPE: return PointerEvent.make(PointerEvent.Kind.CANCEL) return null