Esempio n. 1
0
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 );
}
Esempio n. 3
0
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);
}