Пример #1
0
        protected virtual void MakeTileset()
        {
            RequestManager rm = new RequestManager(MaxConcurrentRequests);

            Tileset = new Unity3DTileset(TilesetOptions, this, rm);
            Stats   = Tileset.Statistics;
        }
Пример #2
0
        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);
        }
Пример #4
0
 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());
 }
Пример #5
0
 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());
 }