@@ -569,7 +569,8 @@ public class VariablesPanelState : BaseStoryPanelState {
569569 public List < string > expandedVariables = new List < string > ( ) ;
570570 }
571571 public class ObservedVariablesPanelState : BaseStoryPanelState {
572- public List < string > observedVariableNames = new List < string > ( ) ;
572+ // The cache is used to restore observed variables when the user exits play mode.
573+ public List < string > restorableObservedVariableNames = new List < string > ( ) ;
573574 public Dictionary < string , ObservedVariable > observedVariables = new Dictionary < string , ObservedVariable > ( ) ;
574575 }
575576
@@ -871,7 +872,7 @@ static void OnUnsetStory () {
871872 _story . onCompleteEvaluateFunction -= OnCompleteEvaluateFunction ;
872873 _story . onChoosePathString -= OnChoosePathString ;
873874 _story . state . onDidLoadState -= OnLoadState ;
874- foreach ( var observedVariableName in InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames ) {
875+ foreach ( var observedVariableName in InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames ) {
875876 UnobserveVariable ( observedVariableName , false ) ;
876877 }
877878 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Clear ( ) ;
@@ -902,9 +903,9 @@ static void OnSetStory () {
902903 }
903904
904905 // Reobserve variables
905- var variablesToObserve = new List < string > ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames ) ;
906+ var variablesToObserve = new List < string > ( InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames ) ;
906907 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Clear ( ) ;
907- InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Clear ( ) ;
908+ InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Clear ( ) ;
908909 foreach ( var observedVariableName in variablesToObserve ) {
909910 if ( _story . variablesState . Contains ( observedVariableName ) ) {
910911 var observedVariable = ObserveVariable ( observedVariableName , true ) ;
@@ -2326,27 +2327,28 @@ static ObservedVariable ObserveVariable (string variableName, bool alsoAddToCach
23262327 story . ObserveVariable ( variableName , observedVariable . variableObserver ) ;
23272328 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Add ( variableName , observedVariable ) ;
23282329 if ( alsoAddToCache ) {
2329- InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Add ( variableName ) ;
2330- if ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count != InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Count ) {
2331- Debug . LogError ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count + " " + InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Count ) ;
2332- InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Clear ( ) ;
2330+ InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Add ( variableName ) ;
2331+ if ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count != InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Count ) {
2332+ Debug . LogError ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count + " " + InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Count ) ;
2333+ InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Clear ( ) ;
23332334 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Clear ( ) ;
23342335 }
23352336 }
23362337 return observedVariable ;
23372338 }
2338-
2339+
2340+ // The cache is used to restore observed variables when the user exits play mode.
23392341 static void UnobserveVariable ( string variableName , bool alsoRemoveFromCache ) {
23402342 if ( ! InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . ContainsKey ( variableName ) ) return ;
23412343
23422344 var observedVariable = InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables [ variableName ] ;
23432345 story . RemoveVariableObserver ( observedVariable . variableObserver , variableName ) ;
23442346 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Remove ( variableName ) ;
23452347 if ( alsoRemoveFromCache ) {
2346- InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Remove ( variableName ) ;
2347- if ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count != InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Count ) {
2348- Debug . LogError ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count + " " + InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Count ) ;
2349- InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariableNames . Clear ( ) ;
2348+ InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Remove ( variableName ) ;
2349+ if ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count != InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Count ) {
2350+ Debug . LogError ( InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Count + " " + InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Count ) ;
2351+ InkPlayerWindowState . Instance . observedVariablesPanelState . restorableObservedVariableNames . Clear ( ) ;
23502352 InkPlayerWindowState . Instance . observedVariablesPanelState . observedVariables . Clear ( ) ;
23512353 }
23522354 }
0 commit comments