void CPatchDialog::UpdateSpinners( bool bUp, int nID ) { texdef_t td; td.rotate = 0.0; td.scale[0] = td.scale[1] = 0.0; td.shift[0] = td.shift[1] = 0.0; td.contents = 0; td.flags = 0; td.value = 0; UpdateData( TRUE ); if ( nID == IDC_SPIN_ROTATE ) { if ( bUp ) td.rotate = m_fRotate; else td.rotate = -m_fRotate; } else if ( nID == IDC_SPIN_HSCALE ) { if ( bUp ) td.scale[0] = 1 - m_fHScale; else td.scale[0] = 1 + m_fHScale; } else if ( nID == IDC_SPIN_VSCALE ) { if ( bUp ) td.scale[1] = 1 - m_fVScale; else td.scale[1] = 1 + m_fVScale; } else if ( nID == IDC_SPIN_HSHIFT ) { if ( bUp ) td.shift[0] = m_fHShift; else td.shift[0] = -m_fHShift; } else if ( nID == IDC_SPIN_VSHIFT ) { if ( bUp ) td.shift[1] = m_fVShift; else td.shift[1] = -m_fVShift; } Patch_SetTextureInfo( &td ); Sys_UpdateWindows( W_CAMERA ); }
/* ================= UpdateSpinners ================= */ void CSurfaceDlg::UpdateSpinners( bool up, int nID ) { UpdateData( TRUE ); float hdiv = 0.0f; float vdiv = 0.0f; // ---> sikk - Merged Patch Inspector into Surface Inspector texdef_t td; td.rotate = 0.0; td.scale[0] = td.scale[1] = 0.0; td.shift[0] = td.shift[1] = 0.0; td.value = 0; // <--- sikk - Merged Patch Inspector into Surface Inspector switch ( nID ) { case IDC_SPIN_ROTATE : Select_RotateTexture((up) ? m_rotate : -m_rotate); break; case IDC_SPIN_HSCALE : m_horzScale += (up) ? 0.1f : -0.1f; hdiv = (m_horzScale == 0.0f) ? 1.0f : m_horzScale; Select_ScaleTexture( 1.0f / hdiv, 0.0f, true, ( m_absolute != FALSE ) ); UpdateData(FALSE); break; case IDC_SPIN_VSCALE : m_vertScale += (up) ? 0.1f : -0.1f; vdiv = (m_vertScale == 0.0f) ? 1.0f : m_vertScale; Select_ScaleTexture( 0.0f, 1.0f / vdiv, true, ( m_absolute != FALSE ) ); UpdateData(FALSE); break; case IDC_SPIN_HSHIFT : Select_ShiftTexture((up) ? m_horzShift : -m_horzShift, 0); break; case IDC_SPIN_VSHIFT : Select_ShiftTexture(0, (up) ? m_vertShift : -m_vertShift); break; // ---> sikk - Merged Patch Inspector into Surface Inspector case IDC_SPIN_PATCH_ROTATE: td.rotate = up ? m_fPatchRotate : -m_fPatchRotate; Patch_SetTextureInfo( &td ); break; case IDC_SPIN_PATCH_HSCALE: td.scale[0] = up ? 1 - m_fPatchHScale : 1 + m_fPatchHScale; Patch_SetTextureInfo( &td ); break; case IDC_SPIN_PATCH_VSCALE: td.scale[1] = up ? 1 - m_fPatchVScale : 1 + m_fPatchVScale; Patch_SetTextureInfo( &td ); break; case IDC_SPIN_PATCH_HSHIFT: td.shift[0] = up ? m_fPatchHShift : -m_fPatchHShift; Patch_SetTextureInfo( &td ); break; case IDC_SPIN_PATCH_VSHIFT: td.shift[1] = up ? m_fPatchVShift : -m_fPatchVShift; Patch_SetTextureInfo( &td ); break; // <--- sikk - Merged Patch Inspector into Surface Inspector } g_changed_surface = true; Sys_UpdateWindows( W_CAMERA ); }
void CSurfaceDlg::UpdateSpinners(bool bUp, int nID) { texdef_t *pt; texdef_t td; if (m_bPatchMode) { td.rotate = 0.0; td.scale[0] = td.scale[1] = 0.0; td.shift[0] = td.shift[1] = 0.0; GrabPatchMods(); pt = &g_patch_texdef; td.contents = pt->contents; td.flags = pt->flags; td.value = pt->value; if (nID == IDC_SPIN_ROTATE) { if (bUp) td.rotate = pt->rotate; else td.rotate = -pt->rotate; } else if (nID == IDC_SPIN_HSCALE) { if (bUp) td.scale[0] = 1-pt->scale[0]; else td.scale[0] = 1+pt->scale[0]; } else if (nID == IDC_SPIN_VSCALE) { if (bUp) td.scale[1] = 1-pt->scale[1]; else td.scale[1] = 1+pt->scale[1]; } else if (nID == IDC_SPIN_HSHIFT) { if (bUp) td.shift[0] = pt->shift[0]; else td.shift[0] = -pt->shift[0]; } else if (nID == IDC_SPIN_VSHIFT) { if (bUp) td.shift[1] = pt->shift[1]; else td.shift[1] = -pt->shift[1]; } pt = &g_qeglobals.d_texturewin.texdef; Patch_SetTextureInfo(&td); } else { // in brush primitive mode, will read up-to-date m_shift m_rotate m_scale GetTexMods (); if (g_bNewFace && g_ptrSelectedFaces.GetSize() > 0) { face_t *selFace = reinterpret_cast<face_t*>(g_ptrSelectedFaces.GetAt(0)); pt = &selFace->texdef; } else { pt = &g_qeglobals.d_texturewin.texdef; } if (nID == IDC_SPIN_ROTATE) { if (g_qeglobals.m_bBrushPrimitMode) { if (bUp) m_rotate += 45; else m_rotate -= 45; } else { if (bUp) pt->rotate += 45; else pt->rotate -= 45; if (pt->rotate < 0) pt->rotate += 360; if (pt->rotate >= 360) pt->rotate -= 360; } } else if (nID == IDC_SPIN_HSCALE) { if (g_qeglobals.m_bBrushPrimitMode) { if (bUp) m_scale[0] += 0.1; else m_scale[0] -= 0.1; } else { if (bUp) pt->scale[0] += 0.1; else pt->scale[0] -= 0.1; } } else if (nID == IDC_SPIN_VSCALE) { if (g_qeglobals.m_bBrushPrimitMode) { if (bUp) m_scale[1] += 0.1; else m_scale[1] -= 0.1; } else { if (bUp) pt->scale[1] += 0.1; else pt->scale[1] -= 0.1; } } else if (nID == IDC_SPIN_HSHIFT) { if (g_qeglobals.m_bBrushPrimitMode) { if (bUp) m_shift[0] += 8; else m_shift[0] -= 8; } else { if (bUp) pt->shift[0] += 8; else pt->shift[0] -= 8; } } else if (nID == IDC_SPIN_VSHIFT) { if (g_qeglobals.m_bBrushPrimitMode) { if (bUp) m_shift[1] += 8; else m_shift[1] -= 8; } else { if (bUp) pt->shift[1] += 8; else pt->shift[1] -= 8; } } } // a local copy of the texture matrix, given for a qtexture_t with width=2 height=2 brushprimit_texdef_t local_bp; brushprimit_texdef_t *bpt; if (g_qeglobals.m_bBrushPrimitMode) { face_t *selFace = NULL; if (g_bNewFace && g_ptrSelectedFaces.GetSize() > 0) { selFace = reinterpret_cast<face_t*>(g_ptrSelectedFaces.GetAt(0)); bpt = &selFace->brushprimit_texdef; } else { bpt = &g_qeglobals.d_texturewin.brushprimit_texdef; } // compute texture matrix // the matrix returned must be understood as a qtexture_t with width=2 height=2 FakeTexCoordsToTexMat( m_shift, m_rotate, m_scale, local_bp.coords ); // copy the texture matrix in the global struct // fit the qtexture if we have a face selected, otherwise g_qeglobals.d_texturewin.brushprimit_texdef uses the basic qtexture_t with width=2 height=2 ConvertTexMatWithQTexture( &local_bp, NULL, bpt, ( ( g_bNewFace && selFace ) ? selFace->d_texture : NULL ) ); } // brush primit : will update the widgets after reading back texture matrix and computing fake shift scale rot SetTexMods(); g_changed_surface = true; Select_SetTexture(pt,&local_bp); }