Skip to content

Commit becce94

Browse files
committed
Limit Partner Obs correctly
1 parent cd8252d commit becce94

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

pufferlib/ocean/drive/drive.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2609,6 +2609,7 @@ void compute_partner_observations(Drive *env, float *obs, int agent_idx, int obs
26092609

26102610
int ego_idx = env->active_agent_indices[agent_idx];
26112611
Agent *ego_entity = &env->agents[ego_idx];
2612+
int ego_id = ego_entity->id;
26122613

26132614
// Ego stats
26142615
float cos_heading = cosf(ego_entity->sim_heading);
@@ -2617,12 +2618,13 @@ void compute_partner_observations(Drive *env, float *obs, int agent_idx, int obs
26172618
// Get all agents in sim within vision range till partner_obs array is filled
26182619
float obs_radius = (env->partner_obs_radius > 0.0f) ? env->partner_obs_radius : 50.0f;
26192620
int cars_seen = 0;
2620-
for (int i = 0; i < env->num_created_agents; i++) {
2621-
int partner_idx = env->active_agent_indices[i];
2622-
// You don't see yourself as partner
2623-
if (partner_idx == ego_idx)
2624-
continue;
2625-
Agent *partner = &env->agents[partner_idx];
2621+
// Iterate over all created agents
2622+
for (int i = 0; i < env->num_created_agents && cars_seen < MAX_PARTNER_OBSERVATIONS; i++) {
2623+
Agent *partner = &env->agents[i];
2624+
if (ego_id == partner->id) {
2625+
continue; // Skip self
2626+
}
2627+
26262628
float distance = relative_distance_3d(ego_entity->sim_x, ego_entity->sim_y, ego_entity->sim_z, partner->sim_x,
26272629
partner->sim_y, partner->sim_z);
26282630

0 commit comments

Comments
 (0)