public void Add(ScriptComponent script) { script.Initialize(services); registeredScripts.Add(script); scriptsToStart.Add(script); if (script is SyncScript syncScript) { syncScripts.Add(syncScript); } }
public void Remove(ScriptComponent script) { bool startWasPending = scriptsToStart.Remove(script); bool wasRegistered = registeredScripts.Remove(script); if (!startWasPending && wasRegistered) { script.Cancel(); if (script is AsyncScript asyncScript) { asyncScript.CancellationTokenSource?.Cancel(); } } if (script is SyncScript syncScript) { syncScripts.Remove(syncScript); } }