in roboschool/cpp-household/render-hud.cpp [146:174]
void Viz::history_advance(bool only_ensure_correct_sizes)
{
int obs_hist_size = obs.size()*HIST;
if (obs_hist_size != (int)obs_hist.size())
obs_hist.assign(obs_hist_size, 0);
if (obs_hist_size > 0 && !only_ensure_correct_sizes) {
memmove(&obs_hist[0], &obs_hist[1], sizeof(obs_hist[0])*(obs_hist_size-1));
for (int c=0; c<(int)obs.size(); c++)
obs_hist[HIST*c+(HIST-1)] = obs[c];
}
int action_hist_size = action.size()*HIST;
if (action_hist_size != (int)action_hist.size())
action_hist.assign(action_hist_size, 0);
if (action_hist_size > 0 && !only_ensure_correct_sizes) {
memmove(&action_hist[0], &action_hist[1], sizeof(action_hist[0])*(action_hist_size-1));
for (int c=0; c<(int)action.size(); c++)
action_hist[HIST*c+(HIST-1)] = action[c];
}
int reward_hist_size = reward.size()*HIST;
if (reward_hist_size != (int)reward_hist.size())
reward_hist.assign(reward_hist_size, 0);
if (reward_hist_size > 0 && !only_ensure_correct_sizes) {
memmove(&reward_hist[0], &reward_hist[1], sizeof(reward_hist[0])*(reward_hist_size-1));
for (int c=0; c<(int)reward.size(); c++)
reward_hist[HIST*c+(HIST-1)] = reward[c];
}
}