diff --git a/prefabs/spaces/circulartunnel.tscn b/prefabs/spaces/circulartunnel.tscn new file mode 100644 index 0000000..170e4e2 --- /dev/null +++ b/prefabs/spaces/circulartunnel.tscn @@ -0,0 +1,107 @@ +[gd_scene format=3 uid="uid://xlj40hoaf7lo"] + +[ext_resource type="Script" uid="uid://c5mdwabsbd4t5" path="res://scripts/spaces/CircularTunnel.cs" id="1_7uc02"] +[ext_resource type="Texture2D" uid="uid://nsuf0f0l30" path="res://textures/spaces/circulartunnel/ring.png" id="2_7uc02"] + +[sub_resource type="Environment" id="Environment_i2qd1"] +ambient_light_source = 1 +ambient_light_color = Color(1, 1, 1, 1) +reflected_light_source = 1 +fog_enabled = true +fog_mode = 1 +fog_light_color = Color(0, 0, 0, 1) +fog_light_energy = 0.01 +fog_density = 1.0 +fog_depth_curve = 0.8485127 +fog_depth_begin = 5.0 +fog_depth_end = 150.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cb3yx"] +transparency = 1 +shading_mode = 0 +albedo_texture = ExtResource("2_7uc02") +distance_fade_mode = 1 +distance_fade_min_distance = 15.0 +distance_fade_max_distance = 40.0 + +[sub_resource type="QuadMesh" id="QuadMesh_sku4h"] +material = SubResource("StandardMaterial3D_cb3yx") +size = Vector2(8, 8) + +[node name="CircularTunnel" type="Node3D" unique_id=1740008516] +script = ExtResource("1_7uc02") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=278552244] +environment = SubResource("Environment_i2qd1") + +[node name="Rings" type="Node3D" parent="." unique_id=1743608970] +transform = Transform3D(3.5, 0, 0, 0, 3.5, 0, 0, 0, 3.5, 0, 0, 0) + +[node name="1" type="MeshInstance3D" parent="Rings" unique_id=2007434064] +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="2" type="MeshInstance3D" parent="Rings" unique_id=1988406875] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.5000014) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="3" type="MeshInstance3D" parent="Rings" unique_id=1582574032] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -15) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="4" type="MeshInstance3D" parent="Rings" unique_id=176014594] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -22.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="5" type="MeshInstance3D" parent="Rings" unique_id=1324853464] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -30) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="6" type="MeshInstance3D" parent="Rings" unique_id=1303428517] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -37.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="7" type="MeshInstance3D" parent="Rings" unique_id=1899433621] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -45.000004) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="8" type="MeshInstance3D" parent="Rings" unique_id=1309912634] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -52.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="9" type="MeshInstance3D" parent="Rings" unique_id=1836294748] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="10" type="MeshInstance3D" parent="Rings" unique_id=74715341] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 15) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="11" type="MeshInstance3D" parent="Rings" unique_id=482743723] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 22.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="12" type="MeshInstance3D" parent="Rings" unique_id=655974884] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="13" type="MeshInstance3D" parent="Rings" unique_id=635914509] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 37.5) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") + +[node name="14" type="MeshInstance3D" parent="Rings" unique_id=1492842686] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 45) +cast_shadow = 0 +mesh = SubResource("QuadMesh_sku4h") diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index c8cd8e9..01416a5 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -620,7 +620,7 @@ public SettingsProfile() UpdateAction = (_, init) => { if (!init) { SkinManager.Load(); } }, List = new("skin") { - Values = ["skin", "void", "grid", "squircles", "waves", "galaxy", "tunnel", "tritunnel", "vortex", "solid", "relic", "conspiracy"] + Values = ["skin", "void", "grid", "squircles", "waves", "galaxy", "tunnel", "circulartunnel", "tritunnel", "vortex", "solid", "relic", "conspiracy"] } }; @@ -633,7 +633,7 @@ public SettingsProfile() UpdateAction = (_, init) => { if (!init) { SkinManager.Load(); } }, List = new("skin") { - Values = ["skin", "void", "grid", "squircles", "waves", "galaxy", "tunnel", "tritunnel", "vortex", "solid", "relic", "conspiracy"] + Values = ["skin", "void", "grid", "squircles", "waves", "galaxy", "tunnel", "circulartunnel", "tritunnel", "vortex", "solid", "relic", "conspiracy"] } }; diff --git a/scripts/spaces/CircularTunnel.cs b/scripts/spaces/CircularTunnel.cs new file mode 100644 index 0000000..7a1a2d0 --- /dev/null +++ b/scripts/spaces/CircularTunnel.cs @@ -0,0 +1,36 @@ +using Godot; + +namespace Spaces; + +public partial class CircularTunnel : BaseSpace +{ + private SettingsProfile settings; + private StandardMaterial3D ringMaterial; + private Node3D rings; + + private const float ring_loop_end = 52.5f; + + public override void _Ready() + { + base._Ready(); + + settings = SettingsManager.Instance.Settings; + rings = GetNode("Rings"); + + ringMaterial = (rings.GetChild(0).Mesh as PlaneMesh).Material as StandardMaterial3D; + } + + public override void _Process(double delta) + { + base._Process(delta); + + // Ring movement + if (settings.SpaceEffects) + { + rings.Position = Vector3.Back * (float)(Time.GetTicksMsec() / 1000f * settings.ApproachRate / 2) % ring_loop_end; + } + + // Hit FX + ringMaterial.AlbedoColor = NoteHitColor; + } +} diff --git a/scripts/spaces/CircularTunnel.cs.uid b/scripts/spaces/CircularTunnel.cs.uid new file mode 100644 index 0000000..06e9fda --- /dev/null +++ b/scripts/spaces/CircularTunnel.cs.uid @@ -0,0 +1 @@ +uid://c5mdwabsbd4t5 diff --git a/textures/spaces/circulartunnel/ring.png b/textures/spaces/circulartunnel/ring.png new file mode 100644 index 0000000..d4fe442 Binary files /dev/null and b/textures/spaces/circulartunnel/ring.png differ diff --git a/textures/spaces/circulartunnel/ring.png.import b/textures/spaces/circulartunnel/ring.png.import new file mode 100644 index 0000000..3955ca8 --- /dev/null +++ b/textures/spaces/circulartunnel/ring.png.import @@ -0,0 +1,42 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nsuf0f0l30" +path.s3tc="res://.godot/imported/ring.png-5ec32eaa0356c8218806c27f2fbe38c8.s3tc.ctex" +path.etc2="res://.godot/imported/ring.png-5ec32eaa0356c8218806c27f2fbe38c8.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://textures/spaces/circulartunnel/ring.png" +dest_files=["res://.godot/imported/ring.png-5ec32eaa0356c8218806c27f2fbe38c8.s3tc.ctex", "res://.godot/imported/ring.png-5ec32eaa0356c8218806c27f2fbe38c8.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0