protected virtual void MakeTileset() { RequestManager rm = new RequestManager(MaxConcurrentRequests); Tileset = new Unity3DTileset(TilesetOptions, this, rm); Stats = Tileset.Statistics; }
public static Unity3DTilesetStatistics Aggregate(params Unity3DTilesetStatistics[] stats) { Unity3DTilesetStatistics ret = new Unity3DTilesetStatistics(); ret.Clear(); if (stats.Length == 0) { return(ret); } ret.NumberOfTilesTotal = 0; ret.LoadedContentCount = 0; ret.RequestQueueLength = stats[0].RequestQueueLength; //Cache informed statistics shared between tilesets, do not sum ret.ConcurrentRequests = stats[0].ConcurrentRequests; ret.ProcessingTiles = stats[0].ProcessingTiles; //Single queue for all tilesets ret.TilesLeftToLoad = ret.RequestQueueLength + ret.ConcurrentRequests + ret.ProcessingTiles; ret.TotalTilesLoaded = 0; foreach (var stat in stats) { ret.FrustumSetCount += stat.FrustumSetCount; ret.UsedSetCount += stat.UsedSetCount; ret.VisibleTileCount += stat.VisibleTileCount; ret.ColliderTileCount += stat.ColliderTileCount; ret.VisibleFaces += stat.VisibleFaces; ret.VisibleTextures += stat.VisibleTextures; ret.VisiblePixels += stat.VisiblePixels; ret.MinVisibleTileDepth = MinPositive(ret.MinVisibleTileDepth, stat.MinVisibleTileDepth); ret.MaxVisibleTileDepth = MaxPositive(ret.MaxVisibleTileDepth, stat.MaxVisibleTileDepth); ret.NumberOfTilesTotal += stat.NumberOfTilesTotal; ret.LoadedContentCount += stat.LoadedContentCount; ret.TotalTilesLoaded += stat.TotalTilesLoaded; ret.LeafContentRequired += stat.LeafContentRequired; ret.LeafContentLoaded += stat.LeafContentLoaded; ret.RequestsThisFrame += stat.RequestsThisFrame; ret.NetworkError = ret.NetworkError || stat.NetworkError; } return(ret); }
public static Unity3DTilesetStatistics Aggregate(params Unity3DTilesetStatistics[] stats) { Unity3DTilesetStatistics ret = new Unity3DTilesetStatistics(); ret.Clear(); if (stats.Length == 0) { return(ret); } foreach (var stat in stats) { ret.UsedSet += stat.UsedSet; ret.FrustumSet += stat.FrustumSet; ret.VisibleTiles += stat.VisibleTiles; ret.ColliderSet += stat.ColliderSet; ret.VisibleFaces += stat.VisibleFaces; ret.VisibleTextures += stat.VisibleTextures; ret.VisiblePixels += stat.VisiblePixels; ret.MinVisibleTileDepth = MinPositive(ret.MinVisibleTileDepth, stat.MinVisibleTileDepth); ret.MaxVisibleTileDepth = MaxPositive(ret.MaxVisibleTileDepth, stat.MaxVisibleTileDepth); ret.RequestsThisFrame += stat.RequestsThisFrame; ret.NetworkErrorsThisFrame += stat.NetworkErrorsThisFrame; ret.NumberOfTilesTotal += stat.NumberOfTilesTotal; ret.RequestQueueLength += stat.RequestQueueLength; ret.ActiveDownloads += stat.ActiveDownloads; ret.ProcessingQueueLength += stat.ProcessingQueueLength; ret.DownloadedTiles += stat.DownloadedTiles; ret.ReadyTiles += stat.ReadyTiles; } return(ret); }
protected override void UpdateStats() { //this works but is very inefficient and drags down framerate significantly when many tilesets are loaded //foreach (var tileset in tilesets) //{ // tileset.UpdateStats(); //} RequestManager.ForEachQueuedDownload(t => { t.Tileset.Statistics.RequestQueueLength++; }); RequestManager.ForEachActiveDownload(t => { t.Tileset.Statistics.ActiveDownloads++; }); foreach (var tile in ProcessingQueue) { tile.Tileset.Statistics.ProcessingQueueLength++; } TileCache.ForEach(t => { t.Tileset.Statistics.DownloadedTiles++; if (t.ContentState == Unity3DTileContentState.READY) { t.Tileset.Statistics.ReadyTiles++; } }); Unity3DTilesetStatistics.MaxLoadedTiles = TileCache.MaxSize; Stats = Unity3DTilesetStatistics.Aggregate(tilesets.Select(t => t.Statistics).ToArray()); }
protected override void UpdateStats() { Stats = Unity3DTilesetStatistics.Aggregate(tilesets.Select(t => t.Statistics).ToArray()); }
protected override void updateStats() { Stats = Unity3DTilesetStatistics.aggregate(Tilesets.Values.Select(t => t.Statistics).ToArray()); }