public void Run(IAABBox startViewBox, IQuadTreeNode rootNode, IArrayBackgroundWorkerListener listener) { var visibleNodesCollector = new VisibleNodesCollector(); rootNode.VisitVisibleNodes(startViewBox, visibleNodesCollector); var planetFactory = mPlanetFactoryCreator.CreatePlanetFactory(); foreach (var curLeaf in visibleNodesCollector.GetVisibleLeaves()) { // ReSharper disable once PossibleNullReferenceException curLeaf.SetPlanets(planetFactory.CreatePlanetsForSector()); } var nodesInCameraCollector = new VisibleNodesCollector(); rootNode.VisitVisibleNodes(new AABBox(0f, 0f, mConstants.GetMaxCameraSize(), mConstants.GetMaxCameraSize()), nodesInCameraCollector); mBackgroundWorker.AddListener(listener); mBackgroundWorker.Run(nodesInCameraCollector.GetVisibleLeaves(), mPlanetFactoryCreator); }
public void AddListener(IArrayBackgroundWorkerListener listener) { mListeners.Add(listener); }