void Viz::history_advance()

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];
	}
}