/// <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);
            }
        }
    }
Ejemplo n.º 2
0
    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);
                    }
                }
            }
        }
    }
Ejemplo n.º 3
0
    /// <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);
        }
    }