/// <summary> /// Update method. /// </summary> void Update() { int diffPedestrians = activePedestrians.Count * globalParam.numberOfPedestriansPerAgent - accumPedestrians; accumPedestrians += (diffPedestrians > 0) ? diffPedestrians : 0; accumSubscribers += (diffPedestrians > 0) ? Mathf.RoundToInt(diffPedestrians * globalParam.percOfPedSubscribed) : 0; if (nextUpdateTime < Time.time) { // SET NEXT UPDATE TIME nextUpdateTime += UpdateRateInSeconds; // LOG NUMBER OF PEDESTRIANS log.Info(string.Format("{0}:{1}:{2}:{3}", logSeriesId, "int", 0, accumPedestrians)); // LOG NUMBER OF SUBSCRIBERS log.Info(string.Format("{0}:{1}:{2}:{3}", logSeriesId, "int", 1, accumSubscribers)); // LOG NUMBER OF ROUTE CHANGES log.Info(string.Format("{0}:{1}:{2}:{3}", logSeriesId, "int", 2, accumRouteChanges)); // SEND INFO TO CHART if (chartController != null) { chartController.AddTimedData(0, nextUpdateTime, accumPedestrians); chartController.AddTimedData(1, nextUpdateTime, accumSubscribers); chartController.AddTimedData(2, nextUpdateTime, accumRouteChanges); } } }
private void ParseDataToChart() { float time; float fValue; int idx; foreach (var item in messageDictionary) { string[] splits = item.Key.Split(':'); string chartStr; string seriesName; if (kpiToChartMapping.TryGetValue(splits[0], out chartStr) && defaultLegends.TryGetValue(splits[0], out seriesName)) { int chartIdx; if (int.TryParse(chartStr, out chartIdx)) { ChartController controller = chartObjects[chartIdx].GetComponent <ChartController>(); //controller.SeriesCount += 1; //idx = controller.SeriesCount - 1; idx = controller.SeriesCount; controller.SetSeriesName(idx, seriesName); foreach (string str in item.Value) { time = GetLogTimeInSecond(str); splits = GetLogMessage(str).Split(':'); fValue = float.Parse(splits[2]); controller.AddTimedData(idx, time, fValue); } } } } }
/// <summary> /// The KPIs are fed to the chart from here. /// </summary> void Update() { for (int i = 0; i < kpiStrings.Count; i++) { var split = SplitKPIString(kpiStrings[i]); var objName = split[0]; var scriptName = split[1]; var fieldName = split[2]; GameObject go = null; for (int j = 0; j < gameObjects.Count; j++) { if (gameObjects[j] != null && gameObjects[j].name.Equals(objName)) { go = gameObjects[j]; break; } } if (go == null) { Debug.Log("Can't find KPI-gameObject?"); continue; } var script = go.GetComponent(scriptName); //Debug.Log(script.GetType()); var value = Convert.ToSingle(script.GetType().GetField(fieldName).GetValue(script)); controller.AddTimedData(i, value); } }