extends Spatial class_name Card signal card_selected() signal card_unselected() signal card_picked() signal card_dropped() var lifted := false export var cardID := "" export var playerID := 0 export var inHand := false onready var animation := $Border/AnimationPlayer func _mouse_hover(): if inHand: animation.play("focus") emit_signal("card_selected") func _mouse_blur(): if inHand: animation.play("blur") emit_signal("card_unselected") func _input_event(camera, event, click_position, click_normal, shape_idx): if lifted and event is InputEventMouseMotion: var origin: Vector3 = camera.project_ray_origin(event.position) var direction: Vector3 = camera.project_ray_normal(event.position) if inHand: transform.origin = Vector3.ZERO + Vector3.RIGHT * direction * 3.0 else: var denom := Vector3.UP.dot(direction) var t: float = (-camera.transform.origin).dot(Vector3.UP) / denom; transform.origin = origin + direction * t if event is InputEventMouseButton and event.button_index == BUTTON_LEFT: if event.pressed: animation.play("lift") if inHand: animation.advance(1.0) emit_signal("card_picked") lifted = true else: if inHand: animation.play("drop") else: animation.play_backwards("lift") emit_signal("card_dropped") lifted = false