diff --git a/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3 b/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3 new file mode 100644 index 0000000..bb14d38 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3 differ diff --git a/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import b/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import new file mode 100644 index 0000000..9499137 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://ddfnb7m4ufpmu" +path="res://.godot/imported/Liquid Gold.mp3-22723f81c2494a2c1e2a1680e9834f48.mp3str" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/Liquid Gold.mp3" +dest_files=["res://.godot/imported/Liquid Gold.mp3-22723f81c2494a2c1e2a1680e9834f48.mp3str"] + +[params] + +loop=false +loop_offset=0.0 +bpm=80.0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_anim.tres b/source/_development/ayuroo/levels/_chase_test/_chase_anim.tres new file mode 100644 index 0000000..b223e9b --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_anim.tres @@ -0,0 +1,1417 @@ +[gd_resource type="AnimationLibrary" load_steps=4 format=3 uid="uid://ck15gq8qw1rfg"] + +[ext_resource type="AudioStream" uid="uid://ddfnb7m4ufpmu" path="res://_development/ayuroo/levels/_chase_test/Liquid Gold.mp3" id="1_58hp1"] + +[sub_resource type="Animation" id="Animation_tqtrq"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ProgressTrack/PlayerDesiredProgress:progress_ratio") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Saws/Saw:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.5, -46)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Saws/Saw2:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.5, -53)] +} + +[sub_resource type="Animation" id="Animation_2iqw8"] +resource_name = "main_track" +length = 208.54 +step = 0.1875 +tracks/0/type = "audio" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Music") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("1_58hp1") +}], +"times": PackedFloat32Array(0) +} +tracks/0/use_blend = true +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ProgressTrack/PlayerDesiredProgress:progress_ratio") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 208.54), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Saws/Saw:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(7.3125, 7.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, -1, -46), Vector3(0, 0.5, -46)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Saws/Saw2:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(9, 9.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, -1, -53), Vector3(0, 0.5, -53)] +} +tracks/4/type = "method" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("VibrationComponent") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(2.625, 4.5, 6, 6.75, 7.5, 8.25, 9, 9.1875, 9.375, 9.5625, 9.75, 9.9375, 10.125, 10.3125, 10.5, 12, 12.375, 12.75, 13.125, 13.5, 13.875, 14.25, 14.625, 15, 15.375, 15.75, 16.125, 16.5, 16.875, 17.25, 17.625, 18, 18.375, 18.75, 19.125, 19.5, 19.875, 20.25, 20.625, 21, 21.375, 21.75, 22.125, 22.5, 22.875, 23.25, 23.625, 24, 24.75, 25.5, 26.25, 27, 27.75, 28.5, 28.875, 29.25, 30, 30.75, 31.5, 32.25, 33, 33.75, 34.5, 34.875, 35.25, 36, 36.75, 37.5, 38.25, 39, 39.75, 40.5, 41.25, 42, 42.75, 43.5, 44.25, 45, 45.375, 45.75, 46.125, 47.625, 48, 48.375, 48.75, 49.125, 49.5, 49.875, 50.25, 50.625, 51, 51.375, 51.75, 52.125, 52.5, 52.875, 53.25, 53.625, 54, 54.375, 54.75, 55.125, 55.5, 55.875, 56.25, 56.625, 57, 57.375, 57.75, 58.125, 58.5, 58.875, 59.25, 59.625, 60, 60.375, 60.75, 61.125, 61.5, 61.875, 62.25, 62.625, 63, 63.375, 63.75, 64.125, 64.5, 64.875, 65.25, 65.625, 66, 66.375, 66.75, 67.125, 67.5, 67.875, 68.25, 68.625, 69, 69.375, 69.75, 70.125, 70.5, 70.875, 71.25, 71.625, 72, 77.625, 78, 78.375, 78.75, 79.125, 79.5, 79.875, 80.25, 80.625, 81, 81.375, 81.75, 82.125, 82.5, 82.875, 83.25, 83.625, 84, 84.375, 84.75, 85.125, 85.5, 85.875, 86.25, 86.625, 87, 87.375, 87.75, 88.125, 88.5, 88.875, 89.25, 89.625, 90, 90.375, 90.75, 91.125, 91.5, 91.875, 92.25, 92.625, 93, 93.375, 93.75, 94.125, 94.5, 94.875, 95.25, 95.625, 96, 96.375, 96.75, 97.125, 97.5, 97.875, 98.25, 98.625, 99, 99.375, 99.75, 100.125, 100.5, 101.625, 102, 102.375, 102.75, 103.125, 103.5, 103.875, 104.25, 104.625, 105, 105.375, 105.75, 106.125, 106.5, 106.875, 107.25, 107.625, 108, 108.375, 108.75, 109.125, 109.5, 109.875, 110.25, 110.625, 111, 111.375, 111.75, 112.125, 112.5, 112.875, 113.25, 113.625, 114, 114.375, 114.75, 115.125, 115.5, 115.875, 116.25, 116.625, 117, 117.375, 117.75, 118.125, 118.5, 118.875, 119.25, 119.625, 120, 120.375, 120.75, 121.125, 121.5, 121.875, 122.25, 122.625, 123, 123.375, 123.75, 124.125, 124.5, 124.875, 125.25, 125.625, 126, 132, 138, 138.75, 139.5, 140.25, 141, 141.75, 142.5, 143.25, 144, 144.375, 144.75, 145.125, 145.5, 145.875, 146.25, 146.625, 147, 147.1875, 147.375, 147.5625, 147.75, 147.9375, 148.125, 148.29951, 148.5, 149.625, 150, 150.375, 150.75, 151.125, 151.5, 151.875, 152.25, 152.625, 153, 153.375, 153.75, 154.125, 154.5, 154.875, 155.25, 155.625, 156, 156.375, 156.75, 157.125, 157.5, 157.875, 158.25, 158.625, 159, 159.375, 159.75, 160.125, 160.5, 160.875, 161.25, 161.625, 162, 162.375, 162.75, 163.125, 163.5, 163.875, 164.25, 164.625, 165, 165.375, 165.75, 166.125, 166.5, 166.875, 167.25, 167.625, 168, 168.375, 168.75, 169.125, 169.5, 169.875, 170.25, 170.625, 171, 171.375, 171.75, 172.125, 172.5, 173.625, 174, 174.375, 174.75, 175.125, 175.5, 175.875, 176.25, 176.625, 177, 177.375, 177.75, 178.125, 178.5, 178.875, 179.25, 179.625, 180, 180.375, 180.75, 181.125, 181.5, 181.875, 182.25, 182.625, 183, 183.375, 183.75, 184.125, 184.5, 184.875, 185.25, 185.625, 186, 186.375, 186.75, 187.125, 187.5, 187.875, 188.25, 188.625, 189, 189.375, 189.75, 190.125, 190.5, 190.875, 191.25, 191.625, 192, 192.375, 192.75, 193.125, 193.5, 193.875, 194.25, 194.625, 195, 195.375, 195.75, 196.125, 196.5, 196.875, 197.25, 197.625, 198, 198.75, 199.5, 200.25, 201, 201.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"values": [{ +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}] +} + +[resource] +_data = { +&"RESET": SubResource("Animation_tqtrq"), +&"main_track": SubResource("Animation_2iqw8") +} diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test.gd b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd new file mode 100644 index 0000000..88f1f67 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd @@ -0,0 +1,60 @@ +extends Level + +signal beat_tick(beat: int) + +const SPEED_TRANSITION_DISTANCE: float = 0.1 +const BPM: int = 160 + +var _previous_beat: int = 0 + +@onready var progress_track: Path3D = $ProgressTrack +@onready var player_desired_progress: PathFollow3D = $ProgressTrack/PlayerDesiredProgress +@onready var music_animation: AnimationPlayer = $MusicAnimation +@onready var debug_visualizer: MeshInstance3D = $ProgressTrack/PlayerDesiredProgress/DebugVisualizer +@onready var music: AudioStreamPlayer = $Music + + +func _ready() -> void: + InputManager.set_mouse_captured(true) + beat_tick.connect(_on_beat_tick) + + GameGlobals.player.global_position = PlayerSpawnPoint.get_spawn_point_by_identifier(&"ChaseBeginning").global_position + + +func _process(_delta: float) -> void: + if not music_animation.is_playing(): + return + + # Beat tick + var _current_time: float = music_animation.current_animation_position + AudioServer.get_time_since_last_mix() + SPrint.print_msgf("Current Music-Time: %s" % _current_time) + _current_time -= AudioServer.get_output_latency() + var beat := int(_current_time * BPM / 60.0) + + if _previous_beat != beat: + _previous_beat = beat + beat_tick.emit(beat) + + +func _physics_process(delta: float) -> void: + var player_character: PlayerCharacter = GameGlobals.player + + var player_offset: float = progress_track.curve.get_closest_offset(player_character.global_position) + var desired_speed_scale: float = remap( + (player_desired_progress.progress - player_offset) + SPEED_TRANSITION_DISTANCE, + 0.0, SPEED_TRANSITION_DISTANCE, + 0.1, 1.05 + ) + player_character.speed_scale = move_toward( + player_character.speed_scale, + clampf(desired_speed_scale, 0.1, 1.05), + delta + ) + + +func _on_start_chase_area_body_entered(_body: Node3D) -> void: + music_animation.play(&"main_track") + + +func _on_beat_tick(beat: int) -> void: + debug_visualizer.scale = Vector3.ONE * (1.25 if beat % 2 == 0 else 1.0) diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test.gd.uid b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd.uid new file mode 100644 index 0000000..5306fbd --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd.uid @@ -0,0 +1 @@ +uid://cdgei0ihcem0n diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn b/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn new file mode 100644 index 0000000..c221bc0 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn @@ -0,0 +1,129 @@ +[gd_scene load_steps=17 format=3 uid="uid://d013wo01v8lr5"] + +[ext_resource type="Script" uid="uid://cdgei0ihcem0n" path="res://_development/ayuroo/levels/_chase_test/_chase_test.gd" id="1_tqtrq"] +[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_14tye"] +[ext_resource type="AnimationLibrary" uid="uid://ck15gq8qw1rfg" path="res://_development/ayuroo/levels/_chase_test/_chase_anim.tres" id="2_gsfaw"] +[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/player_spawn_point.gd" id="3_hw8mu"] +[ext_resource type="Script" uid="uid://dp6jy00a6xuhk" path="res://tools/beat_measurer.gd" id="4_hw8mu"] +[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="5_yax8p"] +[ext_resource type="PackedScene" uid="uid://kne8gkorpuop" path="res://src/ui/menus/death_screen/death_screen.tscn" id="6_u6lfm"] +[ext_resource type="Script" uid="uid://bbwtct3hoxwws" path="res://src/core/vibration_component.gd" id="7_mop3m"] +[ext_resource type="PackedScene" uid="uid://dawmen0hlfaaq" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="8_ff8bp"] +[ext_resource type="PackedScene" uid="uid://srvm3v1grugk" path="res://_development/ayuroo/levels/_experimental/_layout_test.tscn" id="9_gsfaw"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tqtrq"] +sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) +ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) + +[sub_resource type="Sky" id="Sky_yax8p"] +sky_material = SubResource("ProceduralSkyMaterial_tqtrq") + +[sub_resource type="Environment" id="Environment_u6lfm"] +background_mode = 2 +sky = SubResource("Sky_yax8p") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="Curve3D" id="Curve3D_tqtrq"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1150), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="SphereMesh" id="SphereMesh_tqtrq"] +radius = 0.15 +height = 0.3 + +[sub_resource type="BoxShape3D" id="BoxShape3D_gsfaw"] +size = Vector3(14, 5, 1) + +[node name="ChaseTest" type="Node3D"] +script = ExtResource("1_tqtrq") +metadata/_custom_type_script = "uid://cigop0ivp5vvu" + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0) +shadow_enabled = true +directional_shadow_max_distance = 1.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_u6lfm") + +[node name="Music" type="AudioStreamPlayer" parent="."] +volume_db = -6.0 + +[node name="MusicAnimation" type="AnimationPlayer" parent="."] +callback_mode_process = 0 +libraries = { +&"": ExtResource("2_gsfaw") +} + +[node name="PlayerSpawnPoint" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +script = ExtResource("3_hw8mu") +spawn_id = &"ChaseBeginning" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="ProgressTrack" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +curve = SubResource("Curve3D_tqtrq") + +[node name="PlayerDesiredProgress" type="PathFollow3D" parent="ProgressTrack"] +rotation_mode = 0 +loop = false + +[node name="DebugVisualizer" type="MeshInstance3D" parent="ProgressTrack/PlayerDesiredProgress"] +mesh = SubResource("SphereMesh_tqtrq") + +[node name="BeatMeasurer" type="Node" parent="ProgressTrack" node_paths=PackedStringArray("path")] +script = ExtResource("4_hw8mu") +path = NodePath("..") +track_duration = 208.54 +track_bpm = 160 +metadata/_custom_type_script = "uid://dp6jy00a6xuhk" + +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -580) +size = Vector3(14, 1, 1161) +material = ExtResource("2_14tye") + +[node name="Saws" type="Node3D" parent="."] + +[node name="ResetSaw" parent="Saws" instance=ExtResource("5_yax8p")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1, -1006.4116) + +[node name="Saw" parent="Saws" instance=ExtResource("5_yax8p")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -46) + +[node name="Saw2" parent="Saws" instance=ExtResource("5_yax8p")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -53) + +[node name="VibrationComponent" type="Node" parent="."] +script = ExtResource("7_mop3m") +duration = 0.1 +delay = 0.188 +strong_magnitude = 0.0 +metadata/_custom_type_script = "uid://bbwtct3hoxwws" + +[node name="Menus" type="CanvasLayer" parent="."] + +[node name="DeathScreen" parent="Menus" instance=ExtResource("6_u6lfm")] + +[node name="PauseMenu" parent="Menus" instance=ExtResource("8_ff8bp")] + +[node name="LayoutTest" parent="." instance=ExtResource("9_gsfaw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.5, 28) + +[node name="StartChaseArea" type="Area3D" parent="."] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StartChaseArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) +shape = SubResource("BoxShape3D_gsfaw") + +[connection signal="body_entered" from="StartChaseArea" to="." method="_on_start_chase_area_body_entered"] diff --git a/source/_development/ayuroo/levels/_experimental/_layout_test.tscn b/source/_development/ayuroo/levels/_experimental/_layout_test.tscn new file mode 100644 index 0000000..22399a3 --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/_layout_test.tscn @@ -0,0 +1,294 @@ +[gd_scene load_steps=6 format=3 uid="uid://srvm3v1grugk"] + +[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/level/level.gd" id="1_0kdur"] +[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_cxrf3"] +[ext_resource type="Script" uid="uid://briioihkxilxm" path="res://addons/proto_shape/proto_ramp/proto_ramp.gd" id="3_cv3fe"] +[ext_resource type="Material" uid="uid://bwbwqb84pmji3" path="res://assets/materials/dev/orange/orange_04.tres" id="4_kb2k5"] +[ext_resource type="PackedScene" uid="uid://clhy3kiceqf2o" path="res://src/gameplay/characters/player/player_character.tscn" id="5_p8lkr"] + +[node name="LayoutTest" type="Node3D"] +script = ExtResource("1_0kdur") +metadata/_custom_type_script = "uid://cigop0ivp5vvu" + +[node name="Blockout" type="CSGCombiner3D" parent="."] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -3.5) +size = Vector3(2, 1, 8) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D2" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 3.5, -3.2) +size = Vector3(2, 7, 7.4) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D5" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 5.5, -15) +size = Vector3(1, 3, 17) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D9" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 5.5, -15) +size = Vector3(9, 3, 1) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D3" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 3.5, -3.2) +size = Vector3(1, 7, 7.4) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D6" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 5, -8.5) +size = Vector3(10, 4, 4) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D11" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 5, -15.5) +size = Vector3(1, 4, 10) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D12" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 5, -20) +size = Vector3(9, 4, 1) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D18" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, -23) +size = Vector3(22, 8, 1) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D15" type="CSGBox3D" parent="Blockout/CSGBox3D18"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, -0.375) +operation = 2 +size = Vector3(1, 2, 0.25) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D16" type="CSGBox3D" parent="Blockout/CSGBox3D18"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0.25) +operation = 2 +size = Vector3(4, 3, 1) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D17" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 5, -21.5) +size = Vector3(1, 4, 2) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D4" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -10.7) +size = Vector3(4, 4, 7.6) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D11" type="CSGBox3D" parent="Blockout/CSGBox3D4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3.5) +operation = 2 +size = Vector3(2, 4, 0.6) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D8" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 3.5, -15) +size = Vector3(9, 1, 9) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D13" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.5, -19.5) +size = Vector3(4, 1, 8) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D15" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.5, -25.5) +size = Vector3(10, 1, 4) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D7" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 7.5, -11) +size = Vector3(5, 1, 23) +material = ExtResource("2_cxrf3") + +[node name="CSGBox3D10" type="CSGBox3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 7.5, -13.5) +size = Vector3(10, 1, 14) +material = ExtResource("2_cxrf3") + +[node name="ProtoRamp" type="Node3D" parent="Blockout"] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 1, -2) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 0.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="StairSteppingTest" type="Node3D" parent="Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -25, 0) +visible = false + +[node name="ProtoRamp2" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.7071068, 0, -0.7071067, 0, 1, 0, 0.7071067, 0, 0.7071068, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp3" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.2588189, 0, 0.9659258, 0, 1, 0, -0.9659258, 0, 0.2588189, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp4" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.86602527, 0, 0.50000006, 0, 1, 0, -0.50000006, 0, 0.86602527, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp5" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.25881913, 0, -0.9659257, 0, 1, 0, 0.9659257, 0, 0.25881913, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp6" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.9659258, 0, -0.25881886, 0, 1, 0, 0.25881886, 0, 0.9659258, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp7" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(0.49999985, 0, 0.8660254, 0, 1, 0, -0.8660254, 0, 0.49999985, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp8" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(-0.2588191, 0, 0.9659256, 0, 1, 0, -0.9659256, 0, -0.2588191, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp9" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(-0.2588191, 0, 0.9659256, 0, 1, 0, -0.9659256, 0, -0.2588191, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="ProtoRamp10" type="Node3D" parent="Blockout/StairSteppingTest"] +transform = Transform3D(-0.25881892, 0, -0.96592563, 0, 1, 0, 0.96592563, 0, -0.25881892, 0, 1, 1) +script = ExtResource("3_cv3fe") +type = 1 +collisions_enabled = true +width = 2.0 +height = 3.0 +depth = 5.5 +anchor = 0 +anchor_fixed = true +fill = 1.0 +material = ExtResource("4_kb2k5") +calculation = 0 +steps = 16 +metadata/_custom_type_script = "uid://briioihkxilxm" + +[node name="Lighting" type="Node3D" parent="."] + +[node name="SpotLight3D" type="SpotLight3D" parent="Lighting"] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 6, -4) +spot_range = 8.0 + +[node name="OmniLight3D" type="OmniLight3D" parent="Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -12.5) + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -17.5) + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -21.5) + +[node name="PlayerCharacter" parent="." instance=ExtResource("5_p8lkr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9999999, 0) diff --git a/source/tools/beat_measurer.gd b/source/tools/beat_measurer.gd new file mode 100644 index 0000000..e01e60d --- /dev/null +++ b/source/tools/beat_measurer.gd @@ -0,0 +1,36 @@ +@tool +class_name BeatMeasurer +extends Node + + +@export var path: Path3D +@export var track_duration: float = 1.0 +@export var track_bpm: int = 120 +@export var track_bars: int = 4 +@export_tool_button("Force Update") var editor_force_update: Callable = _update_measurement + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + path.curve_changed.connect(_update_measurement) + _update_measurement.call_deferred() + + +func _update_measurement() -> void: + for child: Node in get_children(): + if child.owner == null: + child.queue_free() + + var path_length: float = path.curve.get_baked_length() + var beat_time: float = track_bpm / 60.0 + var beats := int(path_length / beat_time) + + for beat: int in range(beats): + var progress: float = beat_time * beat + var position: Vector3 = path.global_position + path.curve.sample_baked(progress) + DebugDraw3D.draw_sphere(position, 0.15, Color.WHITE, 5.0 if Engine.is_editor_hint() else 500.0) + + var label := Label3D.new() + label.text = str(beat) + label.billboard = BaseMaterial3D.BILLBOARD_ENABLED + add_child(label) + label.global_position = position + Vector3.UP diff --git a/source/tools/beat_measurer.gd.uid b/source/tools/beat_measurer.gd.uid new file mode 100644 index 0000000..fb055ce --- /dev/null +++ b/source/tools/beat_measurer.gd.uid @@ -0,0 +1 @@ +uid://dp6jy00a6xuhk