| 3312 | } |
| 3313 | |
| 3314 | bool ObjGetAnimUpdate(uint16_t objnum, custom_anim *multi_anim_info) { |
| 3315 | object *obj = &Objects[objnum]; |
| 3316 | |
| 3317 | if ((objnum >= 0) && (obj->type != OBJ_NONE) && (obj->type != OBJ_WEAPON) && (obj->flags & OF_POLYGON_OBJECT)) { |
| 3318 | polyobj_info *pm = &obj->rtype.pobj_info; |
| 3319 | ai_frame *ai_info = obj->ai_info; |
| 3320 | |
| 3321 | multi_anim_info->server_time = Gametime; |
| 3322 | multi_anim_info->server_anim_frame = (uint16_t)(pm->anim_frame * 256.0f); |
| 3323 | |
| 3324 | multi_anim_info->anim_start_frame = pm->anim_start_frame; |
| 3325 | multi_anim_info->anim_end_frame = pm->anim_end_frame; |
| 3326 | multi_anim_info->anim_time = pm->anim_time; |
| 3327 | multi_anim_info->max_speed = pm->max_speed; |
| 3328 | |
| 3329 | multi_anim_info->flags = 0; |
| 3330 | |
| 3331 | if (pm->anim_flags & AIAF_LOOPING) |
| 3332 | multi_anim_info->flags |= FMA_LOOPING; |
| 3333 | |
| 3334 | if (obj->ai_info != NULL) { |
| 3335 | multi_anim_info->anim_sound_index = obj->ai_info->last_played_sound_index; |
| 3336 | multi_anim_info->flags |= FMA_HAS_AI; |
| 3337 | } else { |
| 3338 | multi_anim_info->anim_sound_index = -1; |
| 3339 | } |
| 3340 | |
| 3341 | return true; |
| 3342 | } |
| 3343 | |
| 3344 | return false; |
| 3345 | } |
| 3346 | |
| 3347 | void SetObjectControlType(object *obj, int control_type) { |
| 3348 | ASSERT(obj); |
no outgoing calls
no test coverage detected