MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / AIDoTrackFrame

Function AIDoTrackFrame

Descent3/AImain.cpp:4279–4364  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4277}
4278
4279void AIDoTrackFrame(object *obj) {
4280 ai_frame *ai_info = obj->ai_info;
4281 float track_distance;
4282
4283 AI_FriendNumNear = 0;
4284 AI_EnemyNumNear = 0;
4285
4286 if (ai_info->ai_type == AIT_BIRD_FLOCK1 ||
4287 ai_info->flags & (AIF_TRACK_CLOSEST_2_FRIENDS | AIF_TRACK_CLOSEST_2_ENEMIES)) {
4288
4289 if (ai_info->ai_type == AIT_BIRD_FLOCK1)
4290 track_distance = 100.0f;
4291 else
4292 track_distance = GoalDetermineTrackDist(obj);
4293
4294 if (track_distance > 0.0f) {
4295 int16_t near_objs[10];
4296 int num_near = fvi_QuickDistObjectList(&obj->pos, obj->roomnum, ai_info->avoid_friends_distance + track_distance,
4297 near_objs, 10, false, true, false, true);
4298 float dist;
4299 vector to;
4300
4301 AI_EnemyDist[0] = AI_EnemyDist[1] = 9999999.0f;
4302 AI_FriendDist[0] = AI_FriendDist[1] = 9999999.0f;
4303
4304 for (int xxx = 0; xxx < num_near; xxx++) {
4305 object *g_obj = &Objects[near_objs[xxx]];
4306
4307 if (g_obj->type == OBJ_POWERUP || (obj == g_obj) || ObjectsAreRelated(OBJNUM(obj), near_objs[xxx]))
4308 continue;
4309
4310 int *cur_num_near;
4311 object **cur_obj;
4312 float *cur_dist;
4313 vector *cur_dir;
4314
4315 if ((ai_info->flags & AIF_TRACK_CLOSEST_2_ENEMIES) && AIObjEnemy(obj, g_obj)) {
4316 cur_num_near = &AI_EnemyNumNear;
4317 cur_obj = AI_EnemyObj;
4318 cur_dist = AI_EnemyDist;
4319 cur_dir = AI_EnemyDir;
4320 } else if ((ai_info->flags & AIF_TRACK_CLOSEST_2_FRIENDS) && AIObjFriend(obj, g_obj)) {
4321 cur_num_near = &AI_FriendNumNear;
4322 cur_obj = AI_FriendObj;
4323 cur_dist = AI_FriendDist;
4324 cur_dir = AI_FriendDir;
4325 } else
4326 continue;
4327
4328 to = g_obj->pos - obj->pos;
4329 dist = vm_NormalizeVector(&to);
4330
4331 dist -= (obj->size + g_obj->size);
4332 if (dist < 0.0f)
4333 dist = 0.0f;
4334
4335 vector fov_vec;
4336 AIDetermineFovVec(obj, &fov_vec);

Callers 1

AIDoFrameFunction · 0.85

Calls 7

GoalDetermineTrackDistFunction · 0.85
fvi_QuickDistObjectListFunction · 0.85
ObjectsAreRelatedFunction · 0.85
AIObjEnemyFunction · 0.85
AIObjFriendFunction · 0.85
vm_NormalizeVectorFunction · 0.85
AIDetermineFovVecFunction · 0.85

Tested by

no test coverage detected