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

Method UpdateDoorView

editor/WorldObjectsDoorDialog.cpp:435–508  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

433#define NUM_ANIM_FRAMES 30
434
435void 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++;

Callers

nothing calls this directly

Calls 15

GetDoorImageFunction · 0.85
GetPolymodelPointerFunction · 0.85
vm_MakeZeroFunction · 0.85
StartEditorFrameFunction · 0.85
DrawPolygonModelFunction · 0.85
EndEditorFrameFunction · 0.85
attach_to_windowMethod · 0.80
vm_MakeIdentityFunction · 0.50
vm_AnglesToMatrixFunction · 0.50
clearMethod · 0.45
createMethod · 0.45
widthMethod · 0.45

Tested by

no test coverage detected