diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index 29022b9..b8b8bd9 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -10,7 +10,7 @@ [ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="9_i8mqk"] [ext_resource type="AudioStream" uid="uid://ceoqo46r0kgfv" path="res://base-environments/youth_room/audio/jui-jutsu.mp3" id="10_5rpba"] [ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="10_wwwdq"] -[ext_resource type="Script" path="res://logic-scenes/collectable/click_passtrough.gd" id="11_674qe"] +[ext_resource type="Script" path="res://dev-util/click-trough-area.gd" id="11_7uxd8"] [ext_resource type="PackedScene" uid="uid://cceyp2yd6o3sq" path="res://logic-scenes/collectable/collectable_ui.tscn" id="11_jxai0"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_kcdrx"] @@ -462,16 +462,16 @@ func start_soundtrack(): $VoiceTraining.play(70) " +[sub_resource type="BoxShape3D" id="BoxShape3D_cb3g8"] +size = Vector3(1.81843, 2.13395, 0.0774798) + +[sub_resource type="ViewportTexture" id="ViewportTexture_gwx6q"] +viewport_path = NodePath("Collectable/Collectable_ui/Sprite3D/SubViewport") + [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_72g2i"] radius = 0.342951 height = 1.08154 -[sub_resource type="ViewportTexture" id="ViewportTexture_n5aq1"] -viewport_path = NodePath("Collectable/Sprite3D/SubViewport") - -[sub_resource type="BoxShape3D" id="BoxShape3D_em4i8"] -size = Vector3(0.29785, 0.380599, 0.0183088) - [node name="youth room" type="Node3D"] script = ExtResource("1_aitp0") @@ -609,29 +609,31 @@ text = "n out of 3 Memories collected" transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.940637, 1.34703, 0.817837) collision_layer = 16 +[node name="Collectable_ui" type="Area3D" parent="Collectable"] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, -2.38419e-07, 0, 0.071894) +visible = false +script = ExtResource("11_7uxd8") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Collectable/Collectable_ui"] +transform = Transform3D(2.56, 0, 7.10543e-14, 0, 2.56, 0, -7.10543e-14, 0, 2.56, 0, 0, 0.238397) +shape = SubResource("BoxShape3D_cb3g8") + +[node name="Sprite3D" type="Sprite3D" parent="Collectable/Collectable_ui"] +transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758) +pixel_size = 0.015 +no_depth_test = true +texture = SubResource("ViewportTexture_gwx6q") + +[node name="SubViewport" type="SubViewport" parent="Collectable/Collectable_ui/Sprite3D"] +transparent_bg = true +size = Vector2i(300, 350) +render_target_update_mode = 4 + +[node name="Collectable_ui" parent="Collectable/Collectable_ui/Sprite3D/SubViewport" instance=ExtResource("11_jxai0")] + [node name="DisplayMenu" type="CollisionShape3D" parent="Collectable"] shape = SubResource("CapsuleShape3D_72g2i") -[node name="Sprite3D" type="Sprite3D" parent="Collectable"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.213171) -visible = false -pixel_size = 0.001 -billboard = 1 -texture = SubResource("ViewportTexture_n5aq1") -script = ExtResource("11_674qe") - -[node name="SubViewport" type="SubViewport" parent="Collectable/Sprite3D"] -transparent_bg = true -size = Vector2i(256, 384) -render_target_update_mode = 4 - -[node name="Collectable_ui" parent="Collectable/Sprite3D/SubViewport" instance=ExtResource("11_jxai0")] - -[node name="Area3D" type="Area3D" parent="Collectable/Sprite3D"] -collision_layer = 32 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Collectable/Sprite3D/Area3D"] -shape = SubResource("BoxShape3D_em4i8") - -[connection signal="mouse_entered" from="Collectable" to="Collectable/Sprite3D" method="show"] +[connection signal="mouse_entered" from="Collectable" to="Collectable/Collectable_ui" method="show"] [connection signal="mouse_entered" from="Collectable" to="Collectable/DisplayMenu" method="set_disabled" binds= [true]] +[connection signal="input_event" from="Collectable/Collectable_ui" to="Collectable/Collectable_ui" method="_on_input_event" flags=18] diff --git a/src/dev-util/click-trough-area.gd b/src/dev-util/click-trough-area.gd new file mode 100644 index 0000000..5587791 --- /dev/null +++ b/src/dev-util/click-trough-area.gd @@ -0,0 +1,43 @@ +extends Area3D + + +@onready var s: Sprite3D = $Sprite3D +@onready var v: SubViewport = $Sprite3D/SubViewport + +func _process(delta): + var camera = get_viewport().get_camera_3d() + # Look in the same direction as the camera + var look = camera.to_global(Vector3(0, 0, -100)) - camera.global_transform.origin + look = position + look + + look = Vector3(look.x, 0, look.z) + + look_at(look, Vector3.UP) + +func _unhandled_input(event): + if event is InputEventMouse: + # Handled via _on_input_event. + return + v.push_input(event) + +func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int): + # Position of the event in Sprite3D local coordinates. + var texture_3d_position = s.get_global_transform().affine_inverse() * pos + #if !is_zero_approx(texture_3d_position.z): + # # Discard event because event didn't happen on the side of the Sprite3D. + # return + # Position of the event relative to the texture. + var texture_position: Vector2 = Vector2(texture_3d_position.x, -texture_3d_position.y) / s.pixel_size - s.get_item_rect().position + # Send mouse event. + var e: InputEvent = event.duplicate() + if e is InputEventMouse: + e.set_position(texture_position) + e.set_global_position(texture_position) + v.push_input(e) + +func _on_button_pressed(): + print("Button pressed") + + +func _on_line_edit_text_submitted(new_text): + print("Text submitted: ", new_text) diff --git a/src/dev-util/click-trough-ui.tscn b/src/dev-util/click-trough-ui.tscn new file mode 100644 index 0000000..ea621c7 --- /dev/null +++ b/src/dev-util/click-trough-ui.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=4 format=3 uid="uid://c1qli4f05orxk"] + +[ext_resource type="Script" path="res://dev-util/click-trough-area.gd" id="1_p7a7n"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_cb3g8"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_yre71"] +viewport_path = NodePath("Area3D/Sprite3D/SubViewport") + +[node name="Area3D" type="Area3D"] +transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, 0, 0, 0) +script = ExtResource("1_p7a7n") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(2.56, 0, 0, 0, 2.56, 0, 0, 0, 2.56, 0, 0, -1.28) +shape = SubResource("BoxShape3D_cb3g8") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(0.99, 0, 0, 0, 0.99, 0, 0, 7.45058e-09, 0.99, 0, 1.49012e-08, -1.28) +size = Vector3(2.56, 2.56, 2.56) + +[node name="Sprite3D" type="Sprite3D" parent="."] +texture = SubResource("ViewportTexture_yre71") + +[node name="SubViewport" type="SubViewport" parent="Sprite3D"] +size = Vector2i(256, 256) + +[node name="LineEdit" type="LineEdit" parent="Sprite3D/SubViewport"] +offset_left = 32.0 +offset_top = 32.0 +offset_right = 99.0625 +offset_bottom = 63.0 + +[node name="Button" type="Button" parent="Sprite3D/SubViewport"] +offset_left = 50.0 +offset_top = 100.0 +offset_right = 112.0 +offset_bottom = 131.0 +text = "Button" + +[connection signal="input_event" from="." to="." method="_on_input_event"] +[connection signal="text_submitted" from="Sprite3D/SubViewport/LineEdit" to="." method="_on_line_edit_text_submitted"] +[connection signal="pressed" from="Sprite3D/SubViewport/Button" to="." method="_on_button_pressed"] diff --git a/src/logic-scenes/collectable/collectable_ui.tscn b/src/logic-scenes/collectable/collectable_ui.tscn index 10563de..b43582a 100644 --- a/src/logic-scenes/collectable/collectable_ui.tscn +++ b/src/logic-scenes/collectable/collectable_ui.tscn @@ -1,16 +1,22 @@ [gd_scene format=3 uid="uid://cceyp2yd6o3sq"] -[node name="VBoxContainer" type="VBoxContainer"] -offset_right = 256.0 -offset_bottom = 255.0 +[node name="CenterContainer" type="CenterContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 -[node name="Name" type="Label" parent="."] +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Name" type="Label" parent="VBoxContainer"] layout_mode = 2 theme_type_variation = &"HeaderLarge" text = "old Mask" horizontal_alignment = 1 -[node name="Content Notes" type="RichTextLabel" parent="."] +[node name="Content Notes" type="RichTextLabel" parent="VBoxContainer"] custom_minimum_size = Vector2(256, 0) layout_mode = 2 bbcode_enabled = true @@ -19,21 +25,21 @@ Food, Blood, Gore, Whatever, I need a second line. [/center]" fit_content = true -[node name="collect_or_listen" type="Button" parent="."] +[node name="collect_or_listen" type="Button" parent="VBoxContainer"] layout_mode = 2 tooltip_text = "Take this with you, and listen to it's story." text = "Collect" -[node name="Summary" type="Button" parent="."] +[node name="Summary" type="Button" parent="VBoxContainer"] layout_mode = 2 tooltip_text = "Take this with you, but get a neutral description of it's story." text = "get neutral summary" -[node name="skip" type="Button" parent="."] +[node name="skip" type="Button" parent="VBoxContainer"] layout_mode = 2 tooltip_text = "Choose this to entirely skip this Item without being unable to progress in the story. Skipped Segments can still be interacted with via the Pause Screen, if you decide to change your mind." text = "skip" -[node name="put_back" type="Button" parent="."] +[node name="put_back" type="Button" parent="VBoxContainer"] layout_mode = 2 text = "put back" diff --git a/src/logic-scenes/startup/startup.tscn b/src/logic-scenes/startup/startup.tscn index 1950c5b..221b1f8 100644 --- a/src/logic-scenes/startup/startup.tscn +++ b/src/logic-scenes/startup/startup.tscn @@ -130,7 +130,6 @@ use_hidden_tabs_for_min_size = true script = SubResource("GDScript_ia432") [node name="physical Accessibility" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"] -visible = false layout_mode = 2 [node name="Label" type="Label" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility"] @@ -232,6 +231,7 @@ disabled = true text = "go back" [node name="Audio Settings" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"] +visible = false layout_mode = 2 [node name="Label" type="Label" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Audio Settings"] diff --git a/src/project.godot b/src/project.godot index 7b763bb..402458e 100644 --- a/src/project.godot +++ b/src/project.godot @@ -13,6 +13,7 @@ config_version=5 config/name="Frame of Mind" run/main_scene="res://main.tscn" config/features=PackedStringArray("4.0", "Forward Plus") +run/max_fps=60 config/icon="res://icon.png" [autoload]