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

Function AIUpdateAnim

Descent3/AImain.cpp:2506–2766  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2504}
2505
2506void AIUpdateAnim(object *obj) {
2507 ai_frame *ai_info = obj->ai_info;
2508 polyobj_info *p_info = &obj->rtype.pobj_info;
2509 int new_anim = ai_info->next_animation_type;
2510 int ai_movement = ai_info->movement_type;
2511
2512 if (ai_info->anim_sound_handle != 0)
2513 Sound_system.StopSoundLooping(ai_info->anim_sound_handle);
2514
2515 if (!Object_info[obj->id].anim)
2516 return;
2517
2518 if ((Demo_flags == DF_PLAYBACK) || ((Game_mode & GM_MULTI) && (Netgame.local_role == LR_CLIENT))) {
2519 p_info->anim_flags &= ~AIAF_NOTIFY;
2520
2521 if (!(p_info->multi_anim_info.flags & FMA_VALID)) {
2522 mprintf(0, "Update Anim: Earily bail\n");
2523 return;
2524 }
2525
2526 custom_anim *multi_anim_info = &p_info->multi_anim_info;
2527
2528 multi_anim_info->server_time = Gametime;
2529 p_info->anim_frame = ((float)multi_anim_info->server_anim_frame) / 256.0f;
2530
2531 p_info->anim_start_frame = multi_anim_info->anim_start_frame;
2532 p_info->anim_end_frame = multi_anim_info->anim_end_frame;
2533 p_info->anim_time = multi_anim_info->anim_time;
2534 p_info->max_speed = multi_anim_info->max_speed;
2535
2536 p_info->anim_flags = 0;
2537
2538 if (multi_anim_info->flags & FMA_LOOPING)
2539 p_info->anim_flags |= AIAF_LOOPING;
2540
2541 // Make sure we mark it as current and
2542 p_info->multi_anim_info.flags |= FMA_CURRENT;
2543
2544 if (multi_anim_info->anim_sound_index >= 0) {
2545 Sound_system.StopSoundLooping(ai_info->anim_sound_handle);
2546 ai_info->anim_sound_handle = Sound_system.Play3dSound(multi_anim_info->anim_sound_index, SND_PRIORITY_LOW, obj);
2547 }
2548
2549 return;
2550 }
2551
2552 if (new_anim == AS_FLINCH) {
2553 float delta_time = 1.0f + obj->shields / 10.0f;
2554 if (delta_time > 4.3) {
2555 delta_time = 4.3f;
2556 }
2557
2558 ai_info->next_flinch_time = Gametime + delta_time;
2559 }
2560 // mprintf(0, "D %d to %d\n", ai_info->animation_type, ai_info->next_animation_type);
2561
2562 // Update the physics and movement class info
2563 switch (ai_info->animation_type) {

Callers 4

osipf_ObjectCustomAnimFunction · 0.85
AINotifyFunction · 0.85
ai_do_animationFunction · 0.85
GoalAddGoalFunction · 0.85

Calls 10

ps_randFunction · 0.85
MultiPlay3dSoundFunction · 0.85
DemoWrite3DSoundFunction · 0.85
do_melee_attackFunction · 0.85
do_ranged_attackFunction · 0.85
AiMeleeFunction · 0.85
MultiAddObjAnimUpdateFunction · 0.85
DemoWriteObjAnimChangedFunction · 0.85
StopSoundLoopingMethod · 0.80
Play3dSoundMethod · 0.80

Tested by

no test coverage detected