in gym3/libenv_fixedseq.c [120:134]
void libenv_observe(libenv_env *env) {
struct environment *e = env;
for (int env_idx = 0; env_idx < e->num; env_idx++) {
float *ob = e->bufs->ob[env_idx];
*ob = 0;
uint8_t *ac = e->bufs->ac[env_idx];
uint8_t correct_ac = e->sequence[e->step_count % e->episode_len];
e->bufs->rew[env_idx] = (*ac == correct_ac);
bool first = false;
if (e->step_count % e->episode_len == 0) {
first = true;
}
e->bufs->first[env_idx] = first;
}
}