Further updates to state machines

This commit is contained in:
Michal Pikulski
2025-11-05 13:48:25 +01:00
committed by Michal Pikulski
parent 199480447e
commit b3e0f90e09
26 changed files with 2211 additions and 4383 deletions

View File

@@ -221,7 +221,10 @@ namespace Core.Lifecycle
{
LogDebug($"Broadcasting ManagedAwake to {managedAwakeList.Count} components");
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null) continue;
@@ -337,7 +340,10 @@ namespace Core.Lifecycle
ProcessBatchedSceneComponents();
}
foreach (var component in sceneReadyList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(sceneReadyList);
foreach (var component in componentsCopy)
{
if (component == null) continue;
@@ -364,7 +370,10 @@ namespace Core.Lifecycle
{
var saveData = new Dictionary<string, string>();
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;
@@ -396,7 +405,10 @@ namespace Core.Lifecycle
{
var saveData = new Dictionary<string, string>();
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;
@@ -429,7 +441,12 @@ namespace Core.Lifecycle
if (saveData == null) return;
int restoredCount = 0;
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
// (components might destroy themselves during restoration)
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;
@@ -461,7 +478,11 @@ namespace Core.Lifecycle
if (saveData == null) return;
int restoredCount = 0;
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;
@@ -492,7 +513,10 @@ namespace Core.Lifecycle
{
LogDebug("Broadcasting GlobalLoadCompleted");
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;
@@ -516,7 +540,10 @@ namespace Core.Lifecycle
{
LogDebug("Broadcasting GlobalSaveStarted");
foreach (var component in managedAwakeList)
// Create a copy to avoid collection modification during iteration
var componentsCopy = new List<ManagedBehaviour>(managedAwakeList);
foreach (var component in componentsCopy)
{
if (component == null || !component.AutoRegisterForSave) continue;