From acd6c505439a0871115e3411811bc939a5056098 Mon Sep 17 00:00:00 2001
From: bd_ <bd_@nadena.dev>
Date: Wed, 4 Sep 2024 17:00:08 -0700
Subject: [PATCH] fix: menu item override is not shown in sim for autoprop
 boolean toggles (#1104)

---
 Editor/ReactiveObjects/ParameterAssignerPass.cs | 13 +++++++++----
 Editor/ReactiveObjects/Simulator/ROSimulator.cs |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/Editor/ReactiveObjects/ParameterAssignerPass.cs b/Editor/ReactiveObjects/ParameterAssignerPass.cs
index bc4f442c..d86bdda9 100644
--- a/Editor/ReactiveObjects/ParameterAssignerPass.cs
+++ b/Editor/ReactiveObjects/ParameterAssignerPass.cs
@@ -172,10 +172,14 @@ namespace nadena.dev.modular_avatar.core.editor
         internal static ControlCondition AssignMenuItemParameter(
             ModularAvatarMenuItem mami,
             Dictionary<string, float> simulationInitialStates = null,
-            IDictionary<string, ModularAvatarMenuItem> isDefaultOverrides = null)
+            IDictionary<string, ModularAvatarMenuItem> isDefaultOverrides = null,
+            bool? forceSimulation = null
+            )
         {
+            var isSimulation = (simulationInitialStates != null || forceSimulation == true);
+            
             var paramName = mami?.Control?.parameter?.name;
-            if (mami?.Control != null && simulationInitialStates != null && ShouldAssignParametersToMami(mami))
+            if (mami?.Control != null && isSimulation && ShouldAssignParametersToMami(mami))
             {
                 paramName = mami.Control?.parameter?.name;
                 if (string.IsNullOrEmpty(paramName)) paramName = "___AutoProp/" + mami.GetInstanceID();
@@ -187,9 +191,10 @@ namespace nadena.dev.modular_avatar.core.editor
                 if (isDefault)
                 {
                     simulationInitialStates[paramName] = mami.Control.value;
-                } else if (!simulationInitialStates.ContainsKey(paramName))
+                }
+                else
                 {
-                    simulationInitialStates[paramName] = -999;
+                    simulationInitialStates?.TryAdd(paramName, -999);
                 }
             }
             
diff --git a/Editor/ReactiveObjects/Simulator/ROSimulator.cs b/Editor/ReactiveObjects/Simulator/ROSimulator.cs
index 10182deb..d4188fbc 100644
--- a/Editor/ReactiveObjects/Simulator/ROSimulator.cs
+++ b/Editor/ReactiveObjects/Simulator/ROSimulator.cs
@@ -268,7 +268,7 @@ namespace nadena.dev.modular_avatar.core.editor.Simulator
                 return;
             }
 
-            var prop = ParameterAssignerPass.AssignMenuItemParameter(mami)?.Parameter;
+            var prop = ParameterAssignerPass.AssignMenuItemParameter(mami, forceSimulation: true)?.Parameter;
             if (prop == null)
             {
                 elem.style.display = DisplayStyle.None;