diff --git a/Door.gd b/Door.gd new file mode 100644 index 0000000..754a6b4 --- /dev/null +++ b/Door.gd @@ -0,0 +1,58 @@ +extends AnimatableBody3D + + +@export_category('Door') +@export +var interactable: bool = true +@export +var autoclose_time: float = 0.0 + + +@onready +var _door = $CollisionShape3D +@onready +var _anim = $AnimationPlayer +@onready +var _timer = $Timer + +var _open = false + + +func _ready(): + _anim.animation_finished.connect(_on_anim_finished) + _timer.timeout.connect(_on_close_timer) + + +func _do_open(): + # Dont allow closing if the timer is running + if not _timer.is_stopped(): + return + + if not _open: + _anim.play('open') + if autoclose_time != 0.0: + _timer.start(autoclose_time) + print('start ', autoclose_time) + else: + _anim.play_backwards('open') + + +func _on_anim_finished(anim_name): + _open = !_open + + +func _on_close_timer(): + print('timer') + if _open: + _do_open() + + +func open(): + _do_open() + + +func interact(other): + if not interactable: + return + + _do_open() diff --git a/Door.tscn b/Door.tscn new file mode 100644 index 0000000..a22fd80 --- /dev/null +++ b/Door.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=6 format=3 uid="uid://cjn7bvtws2uip"] + +[ext_resource type="Script" path="res://Door.gd" id="1_5n8dw"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_7fob4"] +size = Vector3(1.92, 3.84, 0.1) + +[sub_resource type="BoxMesh" id="BoxMesh_n4ovh"] +size = Vector3(1.92, 3.84, 0.1) + +[sub_resource type="Animation" id="Animation_0hgwy"] +resource_name = "open" +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CollisionShape3D:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.5, 0, 1.76, -0.5, 0, 0.25, 0), +"times": PackedFloat32Array(0, 1) +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ol8av"] +_data = { +"open": SubResource("Animation_0hgwy") +} + +[node name="Door" type="AnimatableBody3D"] +script = ExtResource("1_5n8dw") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.92, 0) +shape = SubResource("BoxShape3D_7fob4") + +[node name="CSGMesh3D" type="CSGMesh3D" parent="CollisionShape3D"] +mesh = SubResource("BoxMesh_n4ovh") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_ol8av") +} + +[node name="Timer" type="Timer" parent="."] +one_shot = true diff --git a/assets b/assets index e986619..c82fba3 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit e986619d8be0a12c1dc3616b87080f9cc9d9778b +Subproject commit c82fba33a3fb4ad42210a56d670bc2271c171e98 diff --git a/cardboard_shader.tres b/cardboard_shader.tres index 6bf20c8..b85ab6b 100644 --- a/cardboard_shader.tres +++ b/cardboard_shader.tres @@ -24,6 +24,7 @@ texture = ExtResource("3_qtx1j") texture_type = 2 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_npjyt"] +output_port_for_preview = 0 operator = 2 [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_g351s"] @@ -117,5 +118,5 @@ nodes/fragment/8/position = Vector2(200, 120) nodes/fragment/9/node = SubResource("VisualShaderNodeVectorOp_mvcqe") nodes/fragment/9/position = Vector2(480, 460) nodes/fragment/10/node = SubResource("VisualShaderNodeVectorOp_xrdx0") -nodes/fragment/10/position = Vector2(520, 640) +nodes/fragment/10/position = Vector2(520, 660) nodes/fragment/connections = PackedInt32Array(2, 4, 5, 0, 3, 0, 5, 1, 4, 0, 6, 1, 2, 4, 6, 0, 5, 0, 7, 2, 8, 0, 7, 0, 2, 4, 0, 1, 7, 0, 0, 0, 6, 0, 0, 9, 9, 0, 7, 1, 4, 1, 9, 1, 10, 0, 9, 0, 2, 0, 10, 0) diff --git a/devworld.tscn b/devworld.tscn index a948555..582406d 100644 --- a/devworld.tscn +++ b/devworld.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://bp1fooevcl4lk"] +[gd_scene load_steps=11 format=3 uid="uid://bp1fooevcl4lk"] [ext_resource type="ArrayMesh" uid="uid://cfm21e1rmsbvt" path="res://assets/maps/devworld.obj" id="1_67d5q"] [ext_resource type="PackedScene" uid="uid://wl1n3y8mcq0x" path="res://Commentary.tscn" id="2_3gk04"] @@ -6,6 +6,7 @@ [ext_resource type="AudioStream" uid="uid://7s6wb487kv2d" path="res://bomb-has-been-defused-csgo-sound-effect.mp3" id="3_sy6mw"] [ext_resource type="PackedScene" uid="uid://ce7nfed54mwps" path="res://Button.tscn" id="5_57sxr"] [ext_resource type="PackedScene" uid="uid://cp4rwojl3c3y3" path="res://test.tscn" id="6_8wwor"] +[ext_resource type="PackedScene" uid="uid://cjn7bvtws2uip" path="res://Door.tscn" id="7_0wker"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_fwixm"] data = PackedVector3Array(-504, -64, 256, -504, -64, 128, -504, -192, 128, -504, -192, 256, -504, -64, 256, -504, -192, 128, -504, -64, 256, -512, -64, 256, -512, -64, 128, -504, -64, 128, -504, -64, 256, -512, -64, 128, -504, -64, 256, -504, -192, 256, -512, -192, 256, -512, -64, 256, -504, -64, 256, -512, -192, 256, -504, -64, 128, -512, -64, 128, -512, -192, 128, -504, -192, 128, -504, -64, 128, -512, -192, 128, -504, -192, 256, -504, -192, 128, -512, -192, 128, -512, -192, 256, -504, -192, 256, -512, -192, 128, -512, -64, 256, -512, -192, 256, -512, -192, 128, -512, -64, 128, -512, -64, 256, -512, -192, 128, -128, 64, 8, -128, 64, 0, -128, -320, 0, -128, -320, 8, -128, 64, 8, -128, -320, 0, -128, 64, 8, -512, 64, 8, -512, 64, 0, -128, 64, 0, -128, 64, 8, -512, 64, 0, -128, 64, 8, -128, -320, 8, -512, -320, 8, -512, 64, 8, -128, 64, 8, -512, -320, 8, -128, 64, 0, -512, 64, 0, -512, -320, 0, -128, -320, 0, -128, 64, 0, -512, -320, 0, -128, -320, 8, -128, -320, 0, -512, -320, 0, -512, -320, 8, -128, -320, 8, -512, -320, 0, -512, 64, 8, -512, -320, 8, -512, -320, 0, -512, 64, 0, -512, 64, 8, -512, -320, 0, -512, 64, 392, -512, 64, 8, -512, -320, 8, -512, -320, 392, -512, 64, 392, -512, -320, 8, -512, 64, 392, -520, 64, 392, -520, 64, 8, -512, 64, 8, -512, 64, 392, -520, 64, 8, -512, 64, 392, -512, -320, 392, -520, -320, 392, -520, 64, 392, -512, 64, 392, -520, -320, 392, -512, 64, 8, -520, 64, 8, -520, -320, 8, -512, -320, 8, -512, 64, 8, -520, -320, 8, -520, 64, 392, -520, -320, 392, -520, -320, 8, -520, 64, 8, -520, 64, 392, -520, -320, 8, -512, -320, 392, -512, -320, 8, -520, -320, 8, -520, -320, 392, -512, -320, 392, -520, -320, 8, 512, 1024, 416, 512, 1024, 96, 512, 1016, 96, 512, 1016, 416, 512, 1024, 416, 512, 1016, 96, 512, 1016, 96, 512, 1024, 96, 512, 1016, 0, 512, 1024, 96, 512, 1024, 0, 512, 1016, 0, -512, 1024, 96, 512, 1024, 96, 512, 1024, 416, 512, 1024, 96, 16, 1024, 96, 16, 1024, 0, 512, 1024, 96, 16, 1024, 0, 512, 1024, 0, -512, 1024, 96, 512, 1024, 416, -512, 1024, 416, -32, 1024, 96, -512, 1024, 96, -512, 1024, 0, -32, 1024, 96, -512, 1024, 0, -32, 1024, 0, 512, 1024, 96, 512, 1016, 96, 16, 1016, 96, 16, 1024, 96, 512, 1024, 96, 16, 1016, 96, 512, 1024, 0, 16, 1024, 0, 16, 1016, 0, 512, 1016, 0, 512, 1024, 0, 16, 1016, 0, 512, 1016, 416, 512, 1016, 96, -512, 1016, 96, 512, 1016, 96, 512, 1016, 0, 16, 1016, 0, 512, 1016, 96, 16, 1016, 0, 16, 1016, 96, 512, 1016, 416, -512, 1016, 96, -512, 1016, 416, -512, 1016, 0, -512, 1016, 96, -32, 1016, 96, -512, 1016, 0, -32, 1016, 96, -32, 1016, 0, 16, 1024, 96, 16, 1016, 96, 16, 1016, 0, 16, 1024, 0, 16, 1024, 96, 16, 1016, 0, -32, 1024, 96, -32, 1024, 0, -32, 1016, 0, -32, 1016, 96, -32, 1024, 96, -32, 1016, 0, 512, 1024, 416, 512, 1016, 416, -512, 1016, 416, -512, 1024, 416, 512, 1024, 416, -512, 1016, 416, -32, 1024, 96, -32, 1016, 96, -512, 1016, 96, -512, 1024, 96, -32, 1024, 96, -512, 1016, 96, 512, 1024, 96, -512, 1024, 96, -512, 1016, 96, 512, 1016, 96, 512, 1024, 96, -512, 1016, 96, -512, 1024, 416, -512, 1016, 416, -512, 1016, 96, -512, 1024, 96, -512, 1024, 416, -512, 1016, 96, -512, 1024, 96, -512, 1016, 96, -512, 1016, 0, -512, 1024, 0, -512, 1024, 96, -512, 1016, 0, -32, 1024, 0, -512, 1024, 0, -512, 1016, 0, -32, 1016, 0, -32, 1024, 0, -512, 1016, 0, 1024, 1024, 0, 1024, 1024, -64, 1024, -1024, -64, 1024, -1024, 0, 1024, 1024, 0, 1024, -1024, -64, 1024, 1024, 0, -1024, 1024, 0, -1024, 1024, -64, 1024, 1024, -64, 1024, 1024, 0, -1024, 1024, -64, 1024, 1024, 0, 1024, -1024, 0, -1024, -1024, 0, -1024, 1024, 0, 1024, 1024, 0, -1024, -1024, 0, 1024, 1024, -64, -1024, 1024, -64, -1024, -1024, -64, 1024, -1024, -64, 1024, 1024, -64, -1024, -1024, -64, 1024, -1024, 0, 1024, -1024, -64, -1024, -1024, -64, -1024, -1024, 0, 1024, -1024, 0, -1024, -1024, -64, -1024, 1024, 0, -1024, -1024, 0, -1024, -1024, -64, -1024, 1024, -64, -1024, 1024, 0, -1024, -1024, -64) @@ -55,3 +56,7 @@ light_color = Color(1, 0, 1, 1) light_energy = 16.0 spot_range = 7.86984 spot_angle = 35.8279 + +[node name="Door" parent="." instance=ExtResource("7_0wker")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.32, 0, -40.8083) +autoclose_time = 2.0