From 0b0cfa516b36aa83badf267b7dcb2efc1e8ff39a Mon Sep 17 00:00:00 2001 From: Banane_Rotative Date: Sat, 15 Nov 2025 16:23:36 +0100 Subject: [PATCH] Convert svg color to a sound texture folder --- Assets/Editor/ColorFolderMap.cs | 29 +++++++++++++++++++ Assets/Editor/ColorFolderMap.cs.meta | 2 ++ Assets/Editor/Config.meta | 8 +++++ Assets/Editor/Config/ColorFolderMap.asset | 17 +++++++++++ .../Editor/Config/ColorFolderMap.asset.meta | 8 +++++ Assets/Editor/SvgToFlatMeshEditor.cs | 9 +++++- Assets/Editor/SvgToFlatMeshEditor.cs.meta | 13 ++++++++- Assets/Resources/Sounds/Textures.meta | 8 +++++ Assets/Resources/Sounds/Textures/Gravel.meta | 8 +++++ 9 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 Assets/Editor/ColorFolderMap.cs create mode 100644 Assets/Editor/ColorFolderMap.cs.meta create mode 100644 Assets/Editor/Config.meta create mode 100644 Assets/Editor/Config/ColorFolderMap.asset create mode 100644 Assets/Editor/Config/ColorFolderMap.asset.meta create mode 100644 Assets/Resources/Sounds/Textures.meta create mode 100644 Assets/Resources/Sounds/Textures/Gravel.meta diff --git a/Assets/Editor/ColorFolderMap.cs b/Assets/Editor/ColorFolderMap.cs new file mode 100644 index 0000000..6f80c64 --- /dev/null +++ b/Assets/Editor/ColorFolderMap.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using Unity.VisualScripting; +using UnityEngine; + +[CreateAssetMenu(fileName = "ColorFolderMap", menuName = "Config/Color Folder Map")] +public class ColorFolderMap : ScriptableObject { + [Serializable] + public struct Entry { + public Color color; + public string folderName; // Example: "Gravel" + } + + private const string SoundTexturesFolder = "Sound/Textures/"; + + public List entries = new List(); + + /// Returns folder path for color, or null if not found (Editor + Runtime safe) + public string GetFolder(Color color) { + string hexColor = color.ToHexString(); + foreach (var entry in entries) { + if (entry.color.ToHexString() == hexColor) { + return SoundTexturesFolder + entry.folderName; + } + } + + return null; + } +} diff --git a/Assets/Editor/ColorFolderMap.cs.meta b/Assets/Editor/ColorFolderMap.cs.meta new file mode 100644 index 0000000..e4e0bdb --- /dev/null +++ b/Assets/Editor/ColorFolderMap.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 915ff3c5d25a0b44e89c7e267f66e4d4 \ No newline at end of file diff --git a/Assets/Editor/Config.meta b/Assets/Editor/Config.meta new file mode 100644 index 0000000..91ad2dd --- /dev/null +++ b/Assets/Editor/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b55fda8cdee81ea43b73610114e83bb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Config/ColorFolderMap.asset b/Assets/Editor/Config/ColorFolderMap.asset new file mode 100644 index 0000000..f04d268 --- /dev/null +++ b/Assets/Editor/Config/ColorFolderMap.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 915ff3c5d25a0b44e89c7e267f66e4d4, type: 3} + m_Name: ColorFolderMap + m_EditorClassIdentifier: + entries: + - color: {r: 0.8784314, g: 0.44313726, b: 0.53333336, a: 1} + folderName: Gravel diff --git a/Assets/Editor/Config/ColorFolderMap.asset.meta b/Assets/Editor/Config/ColorFolderMap.asset.meta new file mode 100644 index 0000000..994e520 --- /dev/null +++ b/Assets/Editor/Config/ColorFolderMap.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc3bfa2a0f7c8b949a39e040c0579741 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/SvgToFlatMeshEditor.cs b/Assets/Editor/SvgToFlatMeshEditor.cs index 846a389..a09cd9c 100644 --- a/Assets/Editor/SvgToFlatMeshEditor.cs +++ b/Assets/Editor/SvgToFlatMeshEditor.cs @@ -23,6 +23,8 @@ public class SvgToFlatMeshEditor : EditorWindow SamplingStepSize = 0.01f }; + [SerializeField] private ColorFolderMap colorFolderMap; + [MenuItem("Tools/SVG → Flat Mesh Regions")] static void OpenWindow() { var w = GetWindow("SVG → Flat Mesh"); @@ -160,7 +162,12 @@ public class SvgToFlatMeshEditor : EditorWindow // Add tag to disable mesh renderer before build go.tag = "EditorOnlyMeshRenderer"; - // TODO: automatically assign audio triggers based on color + // Automatically assign audio triggers based on color + string folder = colorFolderMap.GetFolder(color); + if (folder != null) + { + // TODO: automatically assign audio triggers + } } // Focus selection on created container diff --git a/Assets/Editor/SvgToFlatMeshEditor.cs.meta b/Assets/Editor/SvgToFlatMeshEditor.cs.meta index dc657b3..9122345 100644 --- a/Assets/Editor/SvgToFlatMeshEditor.cs.meta +++ b/Assets/Editor/SvgToFlatMeshEditor.cs.meta @@ -1,2 +1,13 @@ fileFormatVersion: 2 -guid: 9264c9156cb5dbc4cbfeaaa27c0ab93b \ No newline at end of file +guid: 9264c9156cb5dbc4cbfeaaa27c0ab93b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - m_ViewDataDictionary: {instanceID: 0} + - colorFolderMap: {fileID: 11400000, guid: bc3bfa2a0f7c8b949a39e040c0579741, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sounds/Textures.meta b/Assets/Resources/Sounds/Textures.meta new file mode 100644 index 0000000..768b6db --- /dev/null +++ b/Assets/Resources/Sounds/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3a8210de0ae1ce44ac831ac99d756a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sounds/Textures/Gravel.meta b/Assets/Resources/Sounds/Textures/Gravel.meta new file mode 100644 index 0000000..3726ab6 --- /dev/null +++ b/Assets/Resources/Sounds/Textures/Gravel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45cc896a8d2b9de4b85f5c96b530f0f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: