extends Control class_name SpaceNode # adapted from pc_tile code (project-elysium-main) var initial_pos: Vector2 var offset: Vector2 var draggable: bool = false var velocity: float = 0 # variables for velocity calculation var mouse_first_location: Vector2 var mouse_release_location: Vector2 var time_since_first_location: float = -1 # Export variables, for ease of setting without going into the code @export var velocity_coeffecient: int = 500 @export var max_x: int = 1000 @export var min_x: int = 0 @export var ease_out_time: float = 0.5 func _ready() -> void: draggable = true return func _process(delta: float) -> void: global_position.x += velocity if draggable: if (Input.is_action_just_pressed("click")): mouse_first_location = get_global_mouse_position() time_since_first_location = 0 if Input.is_action_pressed("click"): <<<<<<< Updated upstream mouse_first_location = get_global_mouse_position() ======= # If time_since_first_location += delta >>>>>>> Stashed changes elif Input.is_action_just_released("click"): time_since_first_location += delta mouse_release_location = get_global_mouse_position() if mouse_release_location.x < mouse_first_location.x: var distance = mouse_release_location.x - mouse_first_location.x velocity = (distance / (velocity_coeffecient * delta)) draggable = false elif mouse_release_location.x > mouse_first_location.x: var distance = abs(mouse_first_location.x - mouse_release_location.x) velocity = (distance / (velocity_coeffecient * delta)) draggable = false elif not draggable: # when the drag is complete, create a tween to ease out towards zero var tween = get_tree().create_tween() tween.tween_property(self, "velocity", 0, ease_out_time).set_ease(Tween.EASE_OUT) mouse_first_location = Vector2(0,0) mouse_release_location = Vector2(0,0) draggable = true if global_position.x > max_x: push_warning("too far to the pos_x") velocity = 0 global_position.x = 999 time_since_first_location = -1 draggable = true return elif global_position.x < min_x: push_warning("too far to the neg_y") velocity = 0 global_position.x = 1 time_since_first_location = -1 draggable = true return