diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index 5e6aa4f..53f017f 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using Godot; @@ -624,7 +625,7 @@ public SettingsProfile() UpdateAction = (_, init) => { if (!init) { SkinManager.Load(); } }, List = new("skin") { - Values = ["skin", "squircle", "square"] + Values = getAvailableMeshes() } }; @@ -1097,4 +1098,21 @@ private void updateApproachTime() { ApproachTime.Value = ApproachDistance / ApproachRate; } + + private static List getAvailableMeshes() + { + List meshes = ["skin"]; + string meshDir = $"{Constants.USER_FOLDER}/meshes"; + + if (Directory.Exists(meshDir)) + { + string[] objFiles = Directory.GetFiles(meshDir, "*.obj"); + foreach (string file in objFiles) + { + meshes.Add(Path.GetFileNameWithoutExtension(file)); + } + } + + return meshes; + } } diff --git a/scripts/game/LegacyRenderer.cs b/scripts/game/LegacyRenderer.cs index 2bd2f23..e2ca15b 100644 --- a/scripts/game/LegacyRenderer.cs +++ b/scripts/game/LegacyRenderer.cs @@ -8,6 +8,8 @@ public partial class LegacyRenderer : MultiMeshInstance3D public override void _Ready() { settings = SettingsManager.Instance.Settings; + Multimesh.Mesh = SkinManager.Instance.Skin.NoteMesh; + SkinManager.Instance.Loaded += onSkinLoaded; } public override void _Process(double delta) @@ -80,4 +82,9 @@ public override void _Process(double delta) Multimesh.SetInstanceColor(j, color); } } + + private void onSkinLoaded(SkinProfile skin) + { + Multimesh.Mesh = skin.NoteMesh; + } }