| 433 | #define NUM_ANIM_FRAMES 30 |
| 434 | |
| 435 | void CWorldObjectsDoorDialog::UpdateDoorView(void) { |
| 436 | int n = D3EditState.current_door; |
| 437 | CWnd *doorwnd; |
| 438 | RECT rect; |
| 439 | int x, y, bm_handle, w, h; |
| 440 | static int frame = 0, spin_frame = 0; |
| 441 | static int last_door = -1; |
| 442 | static int last_model_handle = -1; |
| 443 | static int door_dir = 0; |
| 444 | |
| 445 | if (Num_doors < 1) |
| 446 | return; |
| 447 | |
| 448 | if (door_dir == 0) { |
| 449 | frame++; |
| 450 | if (frame == NUM_ANIM_FRAMES) { |
| 451 | frame = NUM_ANIM_FRAMES - 1; |
| 452 | door_dir = 1; |
| 453 | } |
| 454 | } else { |
| 455 | frame--; |
| 456 | if (frame == -1) { |
| 457 | frame = 0; |
| 458 | door_dir = 0; |
| 459 | } |
| 460 | } |
| 461 | |
| 462 | doorwnd = GetDlgItem(IDC_DOORVIEW); |
| 463 | doorwnd->GetWindowRect(&rect); |
| 464 | ScreenToClient(&rect); |
| 465 | |
| 466 | Desktop_surf->attach_to_window((unsigned)m_hWnd); |
| 467 | |
| 468 | w = rect.right - rect.left; |
| 469 | h = rect.bottom - rect.top; |
| 470 | |
| 471 | if (last_door != n || last_model_handle != Doors[n].model_handle) { |
| 472 | Desktop_surf->clear(rect.left, rect.top, w, h); |
| 473 | last_door = n; |
| 474 | last_model_handle = Doors[n].model_handle; |
| 475 | } |
| 476 | |
| 477 | bm_handle = GetDoorImage(n); |
| 478 | |
| 479 | vector zero_vector; |
| 480 | vector view_vector = {0, 0, -20}; |
| 481 | matrix id_matrix, rot_matrix; |
| 482 | poly_model *pm = GetPolymodelPointer(bm_handle); |
| 483 | |
| 484 | vm_MakeZero(&zero_vector); |
| 485 | vm_MakeIdentity(&id_matrix); |
| 486 | |
| 487 | float norm_angles[30]; |
| 488 | |
| 489 | for (int i = 0; i < 30; i++) |
| 490 | norm_angles[i] = (float)frame / (float)NUM_ANIM_FRAMES; |
| 491 | |
| 492 | spin_frame++; |
nothing calls this directly
no test coverage detected