Ignore:
Timestamp:
Sep 5, 2018, 11:16:04 PM (6 years ago)
Author:
alloc
Message:

Some small optimizations to the map rendering stuff and added profiling instrumentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/FileCache/MapTileCache.cs

    r326 r329  
    22using System.IO;
    33using UnityEngine;
     4using UnityEngine.Profiling;
    45using Object = UnityEngine.Object;
    56
     
    2627                public void SetZoomCount (int count) {
    2728                        cache = new CurrentZoomFile[count];
     29                        for (int i = 0; i < cache.Length; i++) {
     30                                cache [i] = new CurrentZoomFile ();
     31                        }
    2832                }
    2933
     
    3135                        try {
    3236                                lock (cache) {
    33                                         if (cache [zoomlevel].filename == null || !cache [zoomlevel].filename.Equals (filename)) {
    34                                                 cache [zoomlevel].filename = filename;
     37                                        CurrentZoomFile cacheEntry = cache [zoomlevel];
     38                                       
     39                                        if (cacheEntry.filename == null || !cacheEntry.filename.Equals (filename)) {
     40                                                cacheEntry.filename = filename;
    3541
    3642                                                if (!File.Exists (filename)) {
    37                                                         cache [zoomlevel].data = null;
     43                                                        cacheEntry.pngData = null;
    3844                                                        return null;
    3945                                                }
    4046
    41                                                 cache [zoomlevel].data = File.ReadAllBytes (filename);
     47                                                Profiler.BeginSample ("ReadPng");
     48                                                cacheEntry.pngData = File.ReadAllBytes (filename);
     49                                                Profiler.EndSample ();
    4250                                        }
    4351
    44                                         return cache [zoomlevel].data;
     52                                        return cacheEntry.pngData;
    4553                                }
    4654                        } catch (Exception e) {
    47                                 Log.Out ("Error in MapTileCache.LoadTile: " + e);
     55                                Log.Warning ("Error in MapTileCache.LoadTile: " + e);
    4856                        }
    4957
     
    5159                }
    5260
    53                 public void SaveTile (int zoomlevel, byte[] content) {
     61                public void SaveTile (int zoomlevel, byte[] contentPng) {
    5462                        try {
    5563                                lock (cache) {
    56                                         if (cache [zoomlevel].filename == null) {
     64                                        CurrentZoomFile cacheEntry = cache [zoomlevel];
     65                                       
     66                                        if (string.IsNullOrEmpty (cacheEntry.filename)) {
    5767                                                return;
    5868                                        }
     69                                       
     70                                        cacheEntry.pngData = contentPng;
    5971
    60                                         cache [zoomlevel].data = content;
    61                                         File.WriteAllBytes (cache [zoomlevel].filename, content);
     72                                        Profiler.BeginSample ("WritePng");
     73                                        File.WriteAllBytes (cacheEntry.filename, contentPng);
     74                                        Profiler.EndSample ();
    6275                                }
    6376                        } catch (Exception e) {
    64                                 Log.Out ("Error in MapTileCache.SaveTile: " + e);
     77                                Log.Warning ("Error in MapTileCache.SaveTile: " + e);
    6578                        }
    6679                }
     
    7184                                        foreach (CurrentZoomFile czf in cache) {
    7285                                                if (czf.filename != null && czf.filename.Equals (filename)) {
    73                                                         return czf.data;
     86                                                        return czf.pngData;
    7487                                                }
    7588                                        }
     
    8295                                }
    8396                        } catch (Exception e) {
    84                                 Log.Out ("Error in MapTileCache.GetFileContent: " + e);
     97                                Log.Warning ("Error in MapTileCache.GetFileContent: " + e);
    8598                        }
    8699
     
    88101                }
    89102
    90                 private struct CurrentZoomFile {
     103                private class CurrentZoomFile {
    91104                        public string filename;
    92                         public byte[] data;
     105                        public byte[] pngData;
    93106                }
    94107        }
Note: See TracChangeset for help on using the changeset viewer.