public void Dispose() { if (Disposed) { return; } Layer?.Remove(this, false); Disposed = true; // Remove this from parents if (ParentObjects != null) { foreach (var relevantObject in ParentObjects) { relevantObject.ChildObjects.Remove(this); } } // Return if there are no children if (ChildObjects == null) { return; } // Kill all children var objectsToDispose = ChildObjects.ToArray(); foreach (var t in objectsToDispose) { t.Dispose(); } }
private void CycleQueue() { foreach (var screenObject in ChildObjects.ToArray()) { screenObject.AutoMove(); RemoveObjectIfOffscreen(screenObject); } AddOffscreenObjectToOnscreen(); }