From 43f3758c1488db037aac5967000864fd3180e319 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 6 Aug 2026 04:58:20 +0200 Subject: [PATCH] Keep sidecar replay opt-in local --- Editor/PostprocessorDefineManager.cs | 11 +++++++---- Editor/Settings/MeshLabProjectSettings.cs | 15 +++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Editor/PostprocessorDefineManager.cs b/Editor/PostprocessorDefineManager.cs index 2a47462b..5a8e5e86 100644 --- a/Editor/PostprocessorDefineManager.cs +++ b/Editor/PostprocessorDefineManager.cs @@ -1,20 +1,23 @@ // PostprocessorDefineManager.cs — sidecar replay toggle. -// Storage now lives in MeshLabProjectSettings (per-project, committed). +// Storage is a per-user opt-in so an untrusted project cannot enable replay. // This class is kept as a thin shim so existing call sites don't need changes. +using UnityEditor; + namespace SashaRX.UnityMeshLab { static class PostprocessorDefineManager { + const string PrefKey = "LightmapUvTool.SidecarUv2Mode"; + internal static bool IsEnabled() { - return MeshLabProjectSettings.Instance.sidecarMode; + return EditorPrefs.GetBool(PrefKey, false); } internal static void SetEnabled(bool enabled) { - MeshLabProjectSettings.Instance.sidecarMode = enabled; - MeshLabProjectSettings.Save(); + EditorPrefs.SetBool(PrefKey, enabled); } } } diff --git a/Editor/Settings/MeshLabProjectSettings.cs b/Editor/Settings/MeshLabProjectSettings.cs index 7de0caab..2ecaa377 100644 --- a/Editor/Settings/MeshLabProjectSettings.cs +++ b/Editor/Settings/MeshLabProjectSettings.cs @@ -17,9 +17,6 @@ class MeshLabProjectSettings : ScriptableObject // ── Output ── public string savePath = "Assets/LightmapUvTool_Output"; - // ── UV2 pipeline ── - public bool sidecarMode; - // ── Vertex AO defaults ── public int aoChannelType; // 0=VertexColor, 1-5=UV0-UV4 public int aoChannelComp; // 0=R/X, 1=G/Y, 2=B, 3=A @@ -115,8 +112,14 @@ static void OnGUI(string searchContext) EditorGUILayout.Space(12); EditorGUILayout.LabelField("UV2 Pipeline", EditorStyles.boldLabel); - inst.sidecarMode = EditorGUILayout.Toggle("Sidecar UV2 Mode", inst.sidecarMode); - if (!inst.sidecarMode) + bool sidecarMode = PostprocessorDefineManager.IsEnabled(); + bool requestedSidecarMode = EditorGUILayout.Toggle( + new GUIContent("Sidecar UV2 Mode", + "Stored as a local Editor preference. Projects cannot enable persistent replay."), + sidecarMode); + if (requestedSidecarMode != sidecarMode) + PostprocessorDefineManager.SetEnabled(requestedSidecarMode); + if (!requestedSidecarMode) EditorGUILayout.HelpBox( "Persistent replay is OFF. FBX overwrite will use one-shot replay only.", MessageType.None); @@ -186,7 +189,7 @@ static void ResetToDefaults() inst.borderPaddingPx = fresh.borderPaddingPx; inst.repackPerMesh = fresh.repackPerMesh; inst.savePath = fresh.savePath; - inst.sidecarMode = fresh.sidecarMode; + PostprocessorDefineManager.SetEnabled(false); inst.aoChannelType = fresh.aoChannelType; inst.aoChannelComp = fresh.aoChannelComp; inst.showDebugUI = fresh.showDebugUI;