private void Run() { try { while (running) { Node n; if (loadingQueue.TryDequeue(out n)) { Monitor.Enter(n); if (!n.HasPointsToRender() && !n.HasGameObjects()) { Monitor.Exit(n); CloudLoader.LoadPointsForNode(n); cache.Insert(n); } else { Monitor.Exit(n); } } } } catch (Exception ex) { Debug.LogError(ex); } }
private void Load() { running = true; while (running) { Monitor.Enter(toLoad); if (toLoad.Count != 0) { Node n = toLoad.Dequeue(); Monitor.Exit(toLoad); uint pc = CloudLoader.LoadAllPointsForNode(n); lock (nodePointcounts) { nodePointcounts.Add(n, pc); } lock (rootNodes) { rootNodes.Add(n); } lock (toDisplay) { toDisplay.Enqueue(n); } } else { Monitor.Exit(toLoad); } } }