Compare commits

...

7 Commits

2 changed files with 65 additions and 12 deletions

View File

@@ -1,31 +1,83 @@
extends Control extends Control
class_name SpaceNode class_name SpaceNode
# adapted from pc_tile code (project-elysium-main)
var initial_pos: Vector2 var initial_pos: Vector2
var offset: Vector2 var offset: Vector2
var draggable: bool = false var draggable: bool = false
var velocity: float = 0
# variables for velocity calculation
var mouse_first_location: Vector2
var mouse_last_location: Vector2
var mouse_release_location: Vector2
var mouse_n_minus_one_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: func _ready() -> void:
draggable = true draggable = true
return return
func _process(delta: float) -> void: func _process(delta: float) -> void:
global_position.x += velocity
var offset: Vector2
if draggable: if draggable:
if (Input.is_action_just_pressed("click")):
mouse_first_location = get_global_mouse_position()
offset = get_local_mouse_position() - global_position
time_since_first_location = 0
if Input.is_action_pressed("click", true): if Input.is_action_pressed("click"):
self.global_position = Vector2(get_global_mouse_position().x, self.global_position.y) mouse_first_location = get_global_mouse_position()
global_position.x += -(mouse_last_location.x - mouse_first_location.x)
elif Input.is_action_just_released("click"): 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
is_dragging.is_dragging = 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
# when the drag is complete, create a tween to ease out towards zero
var tween = get_tree().create_tween() var tween = get_tree().create_tween()
tween.tween_property(self, "global_position", Vector2(get_global_mouse_position().x, self.global_position.y), 0.5).set_ease(Tween.EASE_IN_OUT) tween.tween_property(self, "velocity",
0, ease_out_time).set_ease(Tween.EASE_OUT)
else: mouse_first_location = Vector2(0,0)
return mouse_release_location = Vector2(0,0)
func reset_draggable(): draggable = true
if not is_dragging.is_dragging:
is_dragging.is_dragging = false if global_position.x > max_x:
draggable = false push_warning("too far to the pos_x")
velocity = -velocity
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 = -velocity
global_position.x = 1
time_since_first_location = -1
draggable = true
return
mouse_last_location = get_global_mouse_position()

View File

@@ -23,3 +23,4 @@ offset_top = 299.0
offset_right = 455.0 offset_right = 455.0
offset_bottom = 299.0 offset_bottom = 299.0
script = ExtResource("2_mej84") script = ExtResource("2_mej84")
velocity_coeffecient = 110