From c2318a92d1e2f9d9572ff213b8e0bc670540f338 Mon Sep 17 00:00:00 2001 From: Hamcha Date: Sun, 5 May 2019 01:18:55 +0200 Subject: [PATCH] You can drag cards now! --- Scenes/Board.tscn | 1 - Scenes/Components/Card.gd | 21 ++++++++++++++++++++- Scenes/Components/Card.tscn | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/Scenes/Board.tscn b/Scenes/Board.tscn index 3318f59..8670e0b 100644 --- a/Scenes/Board.tscn +++ b/Scenes/Board.tscn @@ -30,7 +30,6 @@ material/0 = null [node name="Card" parent="." instance=ExtResource( 5 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.55435, -0.001, 1.13711 ) -input_capture_on_drag = false [connection signal="card_selected" from="Card" to="BoardUI" method="_card_selected" binds= [ "ff6" ]] [connection signal="card_unselected" from="Card" to="BoardUI" method="_card_unselected"] [connection signal="mouse_exited" from="Card" to="." method="_mouse_blur"] diff --git a/Scenes/Components/Card.gd b/Scenes/Components/Card.gd index 28ae88a..f7facd1 100644 --- a/Scenes/Components/Card.gd +++ b/Scenes/Components/Card.gd @@ -3,8 +3,27 @@ extends Spatial signal card_selected() signal card_unselected() +var lifted := false + +onready var animation := $Border/AnimationPlayer + func _mouse_hover(): emit_signal("card_selected") func _mouse_blur(): - emit_signal("card_unselected") \ No newline at end of file + emit_signal("card_unselected") + +func _input_event(camera, event, click_position, click_normal, shape_idx): + if event is InputEventMouseButton and event.button_index == BUTTON_LEFT: + if event.pressed: + lifted = true + animation.play("lift") + else: + lifted = false + animation.play_backwards("lift") + if lifted and event is InputEventMouseMotion: + var origin: Vector3 = camera.project_ray_origin(event.position) + var direction: Vector3 = camera.project_ray_normal(event.position) + var denom := Vector3.UP.dot(direction) + var t: float = (-camera.transform.origin).dot(Vector3.UP) / denom; + transform.origin = origin + direction * t \ No newline at end of file diff --git a/Scenes/Components/Card.tscn b/Scenes/Components/Card.tscn index 12ff7d3..c38d537 100644 --- a/Scenes/Components/Card.tscn +++ b/Scenes/Components/Card.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://Scenes/Components/Card.gd" type="Script" id=1] [ext_resource path="res://MLPAssets/Models/cardborder.obj" type="ArrayMesh" id=2] @@ -23,6 +23,35 @@ tracks/0/keys = { "values": [ Vector3( 0, 0, 0 ), Vector3( 0, -90, 0 ) ] } +[sub_resource type="Animation" id=6] +resource_name = "lift" +length = 0.3 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath(".:translation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 0.965936, 0.870551 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0.15, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rotation_degrees") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.05, 0.15, 0.3 ), +"transitions": PoolRealArray( 0.392292, 0.392292, 1, 0.329877 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0, 0 ), Vector3( 0, 0, 9.73853 ), Vector3( 0, 0, 0 ) ] +} + [sub_resource type="Animation" id=3] length = 0.5 step = 0.05 @@ -68,16 +97,19 @@ transform = Transform( 1, 0, 0, 0, 1.17955, 0, 0, 0, 1, 0, 0, 0 ) shape = SubResource( 1 ) [node name="Border" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) mesh = ExtResource( 2 ) material/0 = ExtResource( 3 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="Border"] anims/flip = SubResource( 2 ) +anims/lift = SubResource( 6 ) anims/tap = SubResource( 3 ) [node name="CardImage" type="MeshInstance" parent="Border"] transform = Transform( 0.318962, 0, 0, 0, 1, 0, 0, 0, 0.450381, 0, 0.007, 0 ) mesh = SubResource( 4 ) material/0 = SubResource( 5 ) +[connection signal="input_event" from="." to="." method="_input_event"] [connection signal="mouse_entered" from="." to="." method="_mouse_hover"] [connection signal="mouse_exited" from="." to="." method="_mouse_blur"]