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

Function AIPathMoveTurnTowardsNode

Descent3/aipath.cpp:342–536  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

340static void AIPathComplete(object *obj) { GoalPathComplete(obj); }
341
342void AIPathMoveTurnTowardsNode(object *obj, vector *mdir, bool *f_moved) {
343 ai_path_info *aip = &obj->ai_info->path;
344 goal *g_ptr = &obj->ai_info->goals[obj->ai_info->path.goal_index];
345
346 bool f_too_far_from_end = false;
347
348 // game_path *p = &GamePaths[path_info->path_id];
349 int n = aip->cur_node;
350 int p = aip->cur_path;
351
352 bool f_reverse = (g_ptr->flags & GF_PATH_MOVE_REVERSE_DIR) != 0;
353
354 ai_frame *ai_info = obj->ai_info;
355
356 vector cur_pos;
357
358 AIPathGetCurrentNodePos(aip, &cur_pos);
359 // mprintf(0, "Cur pos = %f,%f,%f\n", XYZ(&cur_pos));
360
361 // mprintf(0, "1 R %d, Goal p %d, n %d\n", f_reverse, p, n);
362
363 // mprintf(0, "s %f, %f, %f\n", XYZ(&obj->pos));
364 // mprintf(0, "l %f, %f, %f\n", XYZ(&obj->last_pos));
365
366 // mprintf(0, "%d is at Node %d\n", OBJNUM(obj), n);
367
368 bool f_force_complete_stopping = false;
369
370 if (((!f_reverse && AIPathAtEnd(aip)) || (f_reverse && AIPathAtStart(aip))) &&
371 (((goal *)(&obj->ai_info->goals[aip->goal_index]))->circle_distance == 0.0f) &&
372 obj->movement_type == MT_PHYSICS) {
373 f_too_far_from_end = !AIMoveTowardsPosition(obj, &cur_pos, 1.0, true, mdir, f_moved);
374 if (!f_too_far_from_end) {
375 f_force_complete_stopping = true;
376 }
377 } else {
378 vector dir = cur_pos - obj->pos;
379
380 if (obj->movement_type == MT_WALKING) {
381 float dot = dir * obj->orient.uvec;
382 dir -= dot * obj->orient.uvec;
383 }
384 vm_NormalizeVector(&dir);
385
386 *mdir = dir;
387 *f_moved = false;
388 // AIMoveTowardsDir(obj, &dir);
389 }
390 // removed check if(f_reverse && (path_info->next_node < path_info->start_node))
391 // removed check {
392 // removed check mprintf(0, "AI ERROR: Fixed a bad predefined path next_node to goal_node");
393 // removed check path_info->next_node = path_info->start_node;
394 // removed check Int3();
395 // removed check }
396 // removed check
397 // removed check if(!(f_reverse) && path_info->next_node > path_info->end_node)
398 // removed check {
399 // removed check mprintf(0, "AI ERROR: Fixed a bad predefined path next_node to goal_node");

Callers 1

ai_moveFunction · 0.85

Calls 13

AIPathGetCurrentNodePosFunction · 0.85
AIPathAtEndFunction · 0.85
AIPathAtStartFunction · 0.85
AIMoveTowardsPositionFunction · 0.85
vm_NormalizeVectorFunction · 0.85
AIPathGetNextNodePosFunction · 0.85
AIPathGetPrevNodePosFunction · 0.85
AIPathSetAtEndFunction · 0.85
AIPathSetAtStartFunction · 0.85
AIPathCompleteFunction · 0.85
AIPathMoveToPrevNodeFunction · 0.85
AIPathMoveToNextNodeFunction · 0.85

Tested by

no test coverage detected