diff options
Diffstat (limited to 'Objects/BuilderObject.gd')
-rw-r--r-- | Objects/BuilderObject.gd | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Objects/BuilderObject.gd b/Objects/BuilderObject.gd new file mode 100644 index 0000000..9131120 --- /dev/null +++ b/Objects/BuilderObject.gd @@ -0,0 +1,50 @@ +class_name BuilderObject +extends Node2D + + +signal collided + +var is_colliding = false +var is_dragged = false + +var mouse_offset = Vector2(0,0) +var last_position = Vector2(0,0) + + +func _process(_delta): + if $Area2D.get_overlapping_areas().size() > 0: + is_colliding = true + else: + is_colliding = false + + if is_dragged: + position = get_global_mouse_position() + mouse_offset + + if is_colliding: + modulate = Color("bb5a4b") + else: + modulate = Color("fff") + + +func _on_area_2d_input_event(_viewport, event: InputEvent, _shape_idx): + if event.is_action_pressed("drag_start"): + drag_start() + if event.is_action_released("drag_start"): + drag_end() + + +func drag_start(): + if get_viewport(): + mouse_offset = position - get_global_mouse_position() + last_position = position + + is_dragged = true + +func drag_end(): + if is_dragged and is_colliding: + if last_position != Vector2(0,0): + position = last_position + else: + queue_free() + + is_dragged = false |