private void OnReciveReportPerfCounter(string reporterName, List <EngineNS.Profiler.PerfViewer.PfValue_PerfCounter> scopes, List <EngineNS.Profiler.PerfViewer.PfValue_Data> datas) { if (TargetAccount != reporterName) { return; } if (scopes == null) { return; } var now = DateTime.Now; var delta = now - mStartTime; for (int i = 0; i < scopes.Count; i++) { var perf = FindPerf(scopes[i].NameHash); if (perf == null) { continue; } perf.UpdateData((UInt64)delta.TotalSeconds, scopes[i]); } if (datas == null) { return; } for (int i = 0; i < datas.Count; i++) { var perf = FindData(datas[i].Name); if (perf == null) { continue; } EngineNS.Profiler.PerfViewer.Viewer viewer = null; foreach (var j in EngineNS.CEngine.Instance.Stat.PViewer.Datas) { if (j.Name == datas[i].Name) { viewer = j; break; } } if (viewer == null) { continue; } datas[i].ValueNames = new List <string>(viewer.GetValueNameAction()); perf.UpdateData((UInt64)delta.TotalSeconds, datas[i]); } }
public void UpdateData(UInt64 time, EngineNS.Profiler.PerfViewer.Viewer value) { if (value == null) { return; } var names = value.GetValueNameAction(); var values = value.GetValueAction(); if (names.Length != values.Length) { return; } EngineNS.CEngine.Instance.EventPoster.RunOn(() => { if (names.Length != DataValues.Count) { DataValues.Clear(); for (int i = 0; i < names.Length; i++) { var vd = new ValueData(this); vd.ValueName = names[i]; vd.Value = values[i]; DataValues.Add(vd); } } for (int i = 0; i < DataValues.Count; i++) { DataValues[i].ValueName = names[i]; DataValues[i].Value = values[i]; if (DataValues[i].ShowInGraphButtonVisible == Visibility.Visible) { DataValues[i].GraphDataSource.AppendAsync(Application.Current.MainWindow.Dispatcher, new Point(time, System.Convert.ToDouble(values[i]))); } } return(true); }, EngineNS.Thread.Async.EAsyncTarget.Editor); }