public override void OnEnter() { var saveManager = FungusManager.Instance.SaveManager; saveManager.AddSavePoint(SavePointKey, SavePointDescription); if (fireEvent) { SavePointLoaded.NotifyEventHandlers(SavePointKey); } Continue(); }
/// <summary> /// Starts Block execution based on a Save Point Key /// The execution order is: /// 1. Save Point Loaded event handlers with a matching key. /// 2. First Save Point command (in any Block) with matching key. Execution starts at the following command. /// 3. Any label in any block with name matching the key. Execution starts at the following command. /// </summary> protected virtual void ExecuteBlocks(string savePointKey) { // Execute Save Point Loaded event handlers with matching key. SavePointLoaded.NotifyEventHandlers(savePointKey); // Execute any block containing a SavePoint command matching the save key, with Resume On Load enabled var savePoints = UnityEngine.Object.FindObjectsOfType <SavePoint>(); for (int i = 0; i < savePoints.Length; i++) { var savePoint = savePoints[i]; if (savePoint.ResumeOnLoad && string.Compare(savePoint.SavePointKey, savePointKey, true) == 0) { int index = savePoint.CommandIndex; var block = savePoint.ParentBlock; var flowchart = savePoint.GetFlowchart(); flowchart.ExecuteBlock(block, index + 1); // Assume there's only one SavePoint using this key break; } } }