From 4242bb7047c3d20938e4faeff29f8d597cc90061 Mon Sep 17 00:00:00 2001 From: xwalfie Date: Thu, 28 May 2026 11:08:35 +0200 Subject: [PATCH 1/2] feat: support for custom note meshes --- scripts/database/settings/SettingsProfile.cs | 20 +++++++++++++++++++- scripts/game/LegacyRenderer.cs | 7 +++++++ 2 files changed, 26 insertions(+), 1 deletion(-) 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..433d589 100644 --- a/scripts/game/LegacyRenderer.cs +++ b/scripts/game/LegacyRenderer.cs @@ -8,6 +8,13 @@ public partial class LegacyRenderer : MultiMeshInstance3D public override void _Ready() { settings = SettingsManager.Instance.Settings; + Multimesh.Mesh = SkinManager.Instance.Skin.NoteMesh; + SkinManager.Instance.Connect(SkinManager.SignalName.Loaded, new Callable(this, nameof(OnSkinLoaded))); + } + + public void OnSkinLoaded(SkinProfile skin) + { + Multimesh.Mesh = skin.NoteMesh; } public override void _Process(double delta) From dd02d21c5c6b6f9a3674162633a06acc6840de0d Mon Sep 17 00:00:00 2001 From: xwalfie Date: Fri, 29 May 2026 08:46:47 +0200 Subject: [PATCH 2/2] refactor: keep code consistent --- scripts/game/LegacyRenderer.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/game/LegacyRenderer.cs b/scripts/game/LegacyRenderer.cs index 433d589..e2ca15b 100644 --- a/scripts/game/LegacyRenderer.cs +++ b/scripts/game/LegacyRenderer.cs @@ -9,12 +9,7 @@ public override void _Ready() { settings = SettingsManager.Instance.Settings; Multimesh.Mesh = SkinManager.Instance.Skin.NoteMesh; - SkinManager.Instance.Connect(SkinManager.SignalName.Loaded, new Callable(this, nameof(OnSkinLoaded))); - } - - public void OnSkinLoaded(SkinProfile skin) - { - Multimesh.Mesh = skin.NoteMesh; + SkinManager.Instance.Loaded += onSkinLoaded; } public override void _Process(double delta) @@ -87,4 +82,9 @@ public override void _Process(double delta) Multimesh.SetInstanceColor(j, color); } } + + private void onSkinLoaded(SkinProfile skin) + { + Multimesh.Mesh = skin.NoteMesh; + } }