public PlayerState(String player_name) { this.player_name = player_name; signal = new ManualResetEvent(false); state_lock = new object(); pt = new PerformanceTest(player_name); sensorId_sensorData = new Dictionary <int, SensorData>(); foreach (var sensor_id in MetaData.PLAYER_MAP[player_name]) { sensorId_sensorData.Add(sensor_id, QueryHelpers.getDefaultSensorDataWithSensorID(sensor_id)); } currentRunningState = new CurrentRunningState(-1, -1, -1); aggRunning_full = new AggregateRunningData(); aggRunning_1min = new TimeWindow <CurrentRunningData, AggregateRunningData> (60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData); aggRunning_5min = new TimeWindow <CurrentRunningData, AggregateRunningData> (5 * 60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData); aggRunning_20min = new TimeWindow <CurrentRunningData, AggregateRunningData> (20 * 60 * MetaData.SECOND_TO_PICO, "ts_start", new AggregateRunningData(), QueryHelpers.updateAggregateRunningData); heatmap_full = new HeatmapState(player_name); heatmap_1min = new HeatmapState(player_name, 1 * 60); heatmap_5min = new HeatmapState(player_name, 5 * 60); heatmap_10min = new HeatmapState(player_name, 10 * 60); }
public static AggregateRunningData updateAggregateRunningData (AggregateRunningData seed, CurrentRunningData curValue, IList <CurrentRunningData> expiredList, long count) { double standing_time = seed.standing_time, standing_dist = seed.standing_distance, trot_time = seed.trot_time, trot_dist = seed.trot_distance, low_time = seed.low_time, low_dist = seed.low_distance, medium_time = seed.medium_time, medium_dist = seed.medium_distance, high_time = seed.high_time, high_dist = seed.high_distance, sprint_time = seed.sprint_time, sprint_dist = seed.sprint_distance; //for each expired element, remove its values from previous seed's values foreach (var element in expiredList) { subtractCurrentRunningData(element, ref standing_time, ref standing_dist, ref trot_time, ref trot_dist, ref low_time, ref low_dist, ref medium_time, ref medium_dist, ref high_time, ref high_dist, ref sprint_time, ref sprint_dist); } //add current values to previous seed values addCurrentRunningData(curValue, ref standing_time, ref standing_dist, ref trot_time, ref trot_dist, ref low_time, ref low_dist, ref medium_time, ref medium_dist, ref high_time, ref high_dist, ref sprint_time, ref sprint_dist); return(new AggregateRunningData { player_id = curValue.player_id, ts = curValue.ts_stop, standing_time = standing_time, standing_distance = standing_dist, trot_time = trot_time, trot_distance = trot_dist, low_time = low_time, low_distance = low_dist, medium_time = medium_time, medium_distance = medium_dist, high_time = high_time, high_distance = high_dist, sprint_time = sprint_time, sprint_distance = sprint_dist }); }
public void query1(PlayerData player) { incrementInputCount(); CurrentRunningData currentRunning = QueryHelpers.updateCurrentRunningData(currentRunningState, player); if (currentRunning != null) { aggRunning_full = QueryHelpers.updateAggregateRunningData(aggRunning_full, currentRunning, new List <CurrentRunningData> { }, 0); pt.OutputCount++; aggRunning_1min.getUpdate(currentRunning); pt.OutputCount++; aggRunning_5min.getUpdate(currentRunning); pt.OutputCount++; aggRunning_20min.getUpdate(currentRunning); pt.OutputCount++; } }