/// <summary> /// Iterate through all the objects in ActiveObjects and call Begin /// </summary> public override void Begin() { base.Begin(); // Do not need to check whether begun has already been called - this is guaranteed // Do another pass on our ObjectsToAdd to add any stragglers ActiveObjects.AddRange(ObjectsToAdd); ObjectsToAdd.Clear(); foreach (T obj in ActiveObjects.FindAll(x => !x.IsBegun)) { // Call begin on any object which has not already begun obj.Begin(); } }