Пример #1
0
 private void OnLockStateChanged(bool locked)
 {
     if (!locked)
     {
         data = CompilationData.GetAll();
     }
 }
Пример #2
0
        private static CompilationData ConvertBeeDataToCompilationData()
        {
            const string ProfilerJson = "Library/Bee/profiler.json";

            if (!File.Exists(ProfilerJson))
            {
                return(null);
            }

            try
            {
                var beeData =
                    JsonUtility.FromJson <BeeProfilerData>(
                        File.ReadAllText(ProfilerJson)); // "profiler.json")); // "Library/Bee/profiler.json"));
                if (beeData.traceEvents == null || !beeData.traceEvents.Any())
                {
                    return(null);
                }

                beeData.traceEvents = beeData.traceEvents
                                      .Where(x => x.ts > 0)
                                      .OrderBy(x => x.ts)
                                      .ToList();
                var ticksPerMicrosecond = TimeSpan.TicksPerMillisecond / 1000;

                var firstTs               = beeData.traceEvents.First().ts;
                var lastTs                = beeData.traceEvents.Last().ts;
                var beeCompilationSpan    = lastTs - firstTs;
                var unityCompilationSpan  = (TraceData.instance.CompilationFinished - TraceData.instance.CompilationStarted).Ticks / ticksPerMicrosecond;
                var compilationSpanOffset = Math.Max(0, unityCompilationSpan - beeCompilationSpan);
                var offsetToFirstTs       = TraceData.instance.CompilationStarted.Ticks / ticksPerMicrosecond - firstTs + compilationSpanOffset;

                var cc = new CompilationData()
                {
                    CompilationStarted   = TraceData.instance.CompilationStarted,
                    CompilationFinished  = TraceData.instance.CompilationFinished,
                    AfterAssemblyReload  = TraceData.instance.AfterAssemblyReload,
                    BeforeAssemblyReload = TraceData.instance.BeforeAssemblyReload,
                    compilationData      = beeData.traceEvents
                                           .Where(x => x.name.Equals("Csc", StringComparison.Ordinal) && x.args.detail != null)
                                           .Select(x => new AssemblyCompilationData()
                    {
                        assembly = "Library/ScriptAssemblies/" +
                                   Path.GetFileName(x.args.detail.Split(' ').FirstOrDefault()),
                        StartTime = new DateTime((x.ts + offsetToFirstTs) * ticksPerMicrosecond),
                        EndTime   = new DateTime((x.ts + offsetToFirstTs + x.dur) * ticksPerMicrosecond),
                    })
                                           .ToList()
                };

                // var beeCompilationStarted = new DateTime((beeData.traceEvents.First().ts) * conv);
                // var beeCompilationFinished = new DateTime((beeData.traceEvents.Last().ts) * conv);
                // Debug.Log(beeCompilationStarted + " - " + cc.CompilationStarted + ", " + beeCompilationFinished + " - " + cc.CompilationFinished);

                // foreach (var asm in cc.compilationData)
                //     Debug.Log(asm);

                return(cc);
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                return(null);
            }
        }