Stand and holder
This commit is contained in:
parent
2f2ac7c540
commit
b7ce36ffd0
15 changed files with 408 additions and 1 deletions
23
src/button_gens/stand_buttons.gd
Normal file
23
src/button_gens/stand_buttons.gd
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
extends ButtonGenerator
|
||||
|
||||
|
||||
func get_buttons() -> Control:
|
||||
var vbox: VBoxContainer = VBoxContainer.new()
|
||||
|
||||
var position_label: Label = Label.new()
|
||||
position_label.text = "Позиция"
|
||||
vbox.add_child(position_label)
|
||||
var position_slider: HSlider = HSlider.new()
|
||||
position_slider.min_value = 0
|
||||
position_slider.max_value = 1
|
||||
position_slider.step = 0.01
|
||||
position_slider.set_value_no_signal(($"../Holder/Cylinder_001".position.y - 5.491)/5)
|
||||
position_slider.value_changed.connect(on_value_set)
|
||||
|
||||
vbox.add_child(position_slider)
|
||||
|
||||
return vbox
|
||||
|
||||
func on_value_set(value: float) -> void:
|
||||
$"../Holder/Cylinder_001".position.y = lerp(5.491,10.491,value)
|
||||
|
||||
1
src/button_gens/stand_buttons.gd.uid
Normal file
1
src/button_gens/stand_buttons.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://60nyr4sq6k60
|
||||
|
|
@ -4,6 +4,8 @@ class_name DraggableObject
|
|||
|
||||
signal drag_started
|
||||
signal drag_ended
|
||||
signal drag_started_on(obj: DraggableObject)
|
||||
signal drag_ended_on(obj: DraggableObject)
|
||||
|
||||
var mouse_in: bool = false
|
||||
var dragged: bool = false:
|
||||
|
|
@ -11,12 +13,14 @@ var dragged: bool = false:
|
|||
if dragged != value:
|
||||
if value:
|
||||
drag_started.emit()
|
||||
drag_started_on.emit(self)
|
||||
GuiSignalBus.clear_buttons.emit()
|
||||
get_viewport().get_camera_3d().start_interaction_seeking(self)
|
||||
if button_generator:
|
||||
GuiSignalBus.add_buttons.emit(button_generator.get_buttons())
|
||||
else:
|
||||
drag_ended.emit()
|
||||
drag_ended_on.emit(self)
|
||||
dragged = value
|
||||
|
||||
@export var interactible: Interactible
|
||||
|
|
|
|||
30
src/flask_hold_area.gd
Normal file
30
src/flask_hold_area.gd
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
extends Area3D
|
||||
|
||||
var held_flask: DraggableObject
|
||||
var flask_parent: Node
|
||||
|
||||
func _on_area_entered(area: Area3D) -> void:
|
||||
if held_flask:
|
||||
return
|
||||
if area.is_in_group("flask"):
|
||||
area.drag_ended_on.connect(snap_flask)
|
||||
|
||||
|
||||
func _on_area_exited(area: Area3D) -> void:
|
||||
if held_flask:
|
||||
return
|
||||
if area.is_in_group("flask") and area.drag_ended_on.is_connected(snap_flask):
|
||||
area.drag_ended_on.disconnect(snap_flask)
|
||||
|
||||
func snap_flask(flask: DraggableObject) -> void:
|
||||
flask_parent = flask.get_parent()
|
||||
flask.reparent(self)
|
||||
held_flask = flask
|
||||
flask.drag_ended_on.disconnect(snap_flask)
|
||||
flask.position = Vector3.ZERO
|
||||
flask.drag_ended_on.connect(unsnap_flask)
|
||||
|
||||
func unsnap_flask(flask: DraggableObject) -> void:
|
||||
held_flask = null
|
||||
flask.reparent(flask_parent)
|
||||
flask.drag_ended_on.disconnect(unsnap_flask)
|
||||
1
src/flask_hold_area.gd.uid
Normal file
1
src/flask_hold_area.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dc4qhmcjwi568
|
||||
11
src/return_to_start.gd
Normal file
11
src/return_to_start.gd
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
extends Node
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
1
src/return_to_start.gd.uid
Normal file
1
src/return_to_start.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://b6oj0pctnkn0t
|
||||
Loading…
Add table
Add a link
Reference in a new issue