⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faceattributesdialog.cpp

📁 3D游戏场景编辑器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	}

	UpdateData (TRUE);
	OnFloatKillFocus (m_EditYScale, &m_TextureYScale, 1.0f, "1.0");
	SelFaceList_Enum (m_pDoc->pSelFaces, ChangeTextureYScale, &m_TextureYScale);
	AssignCurrentToViews ();
}

static geBoolean ChangeLightXScale (Face *pFace, void *lParam)
{
	float *pXScale = (float *)lParam;
	float xScale, yScale;

	Face_GetLightScale (pFace, &xScale, &yScale);
	Face_SetLightScale (pFace, *pXScale, yScale);
	return GE_TRUE;
}
	
void CFaceAttributesDialog::OnKillfocusEditxlightscale() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_LightXScale;
	if (GetDlgItemInt(IDC_EDITXLIGHTSCALE) == NULL)
	{
		this->SetDlgItemInt(IDC_EDITXLIGHTSCALE, lastValue);
		return;
	}

	UpdateData (TRUE);
	OnFloatKillFocus (m_EditLightXScale, &m_LightXScale, 1.0f, "1.0");
	SelFaceList_Enum (m_pDoc->pSelFaces, ChangeLightXScale, &m_LightXScale);
	AssignCurrentToViews ();
}


static geBoolean ChangeLightYScale (Face *pFace, void *lParam)
{
	float *pYScale = (float *)lParam;
	float xScale, yScale;

	Face_GetLightScale (pFace, &xScale, &yScale);
	Face_SetLightScale (pFace, xScale, *pYScale);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusEditylightscale() 
{	
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_LightYScale;
	if (GetDlgItemInt(IDC_EDITYLIGHTSCALE) == NULL)
	{
		this->SetDlgItemInt(IDC_EDITYLIGHTSCALE, lastValue);
		return;
	}


	UpdateData (TRUE);
	OnFloatKillFocus (m_EditLightYScale, &m_LightYScale, 1.0f, "1.0");
	SelFaceList_Enum (m_pDoc->pSelFaces, ChangeLightYScale, &m_LightYScale);
	AssignCurrentToViews ();
}

static geBoolean ChangeTextureAngle (Face *pFace, void *lParam)
{
	float *pAngle = (float *)lParam;

	Face_SetTextureRotate (pFace, *pAngle);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusAngle() 
{	
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_TextureAngle;
	if (GetDlgItemInt(IDC_EDITANGLE) == NULL)
	{
		this->SetDlgItemInt(IDC_EDITANGLE, lastValue);
		return;
	}


	UpdateData (TRUE);
	OnFloatKillFocus (m_EditAngle, &m_TextureAngle, 0, "0");
	SelFaceList_Enum (m_pDoc->pSelFaces, ::ChangeTextureAngle, &m_TextureAngle);
	AssignCurrentToViews ();
}

static geBoolean ChangeLightIntensity (Face *pFace, void *lParam)
{
	int *pIntensity = (int *)lParam;

	Face_SetLightIntensity (pFace, *pIntensity);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusFacelightintensity() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_LightIntensity;
	if (GetDlgItemInt(IDC_FACELIGHTINTENSITY) == NULL)
	{
		this->SetDlgItemInt(IDC_FACELIGHTINTENSITY, lastValue);
		return;
	}

	UpdateData (TRUE);
	OnIntKillFocus (m_EditLightIntensity, &m_LightIntensity, 300, "300");
	SelFaceList_Enum (m_pDoc->pSelFaces, ::ChangeLightIntensity, &m_LightIntensity);
	AssignCurrentToViews ();
}

static geBoolean ChangeMipMapBias (Face *pFace, void *lParam)
{
	float *pMipMapBias = (float *)lParam;

	Face_SetMipMapBias (pFace, *pMipMapBias);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusMipmapbias() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	int	lastValue = m_MipMapBias;
	if (GetDlgItemInt(IDC_MIPMAPBIAS) == NULL)
	{
		this->SetDlgItemInt(IDC_MIPMAPBIAS, lastValue);
		return;
	}

	
	UpdateData (TRUE);
	OnFloatKillFocus (m_EditMipMapBias, &m_MipMapBias, 0, "1.0");
	SelFaceList_Enum (m_pDoc->pSelFaces, ::ChangeMipMapBias, &m_MipMapBias);
	AssignCurrentToViews ();
}

static geBoolean ChangeReflectivity (Face *pFace, void *lParam)
{
	float *pReflectivity = (float *)lParam;

	Face_SetReflectivity (pFace, *pReflectivity);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusReflectivity() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_Reflectivity;
	if (GetDlgItemInt(IDC_REFLECTIVITY) == NULL)
	{
		this->SetDlgItemInt(IDC_REFLECTIVITY, lastValue);
		return;
	}

	UpdateData (TRUE);
	OnFloatKillFocus (m_EditReflectivity, &m_Reflectivity, 0, "1.0");

	if(m_Reflectivity < 0.0f)
	{
		m_Reflectivity	=0.0f;
	}
	else if(m_Reflectivity > 255.0f)
	{
		m_Reflectivity	=10.0f;
	}

	SelFaceList_Enum (m_pDoc->pSelFaces, ::ChangeReflectivity, &m_Reflectivity);
	AssignCurrentToViews ();
}

static geBoolean ChangeTranslucency (Face *pFace, void *lParam)
{
	float *pTranslucency = (float *)lParam;

	Face_SetTranslucency (pFace, *pTranslucency);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnKillfocusFacetranslucency() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	int	lastValue = m_Translucency;
	if (GetDlgItemInt(IDC_FACETRANSLUCENCY) == NULL)
	{
		this->SetDlgItemInt(IDC_FACETRANSLUCENCY, lastValue);
		return;
	}


	UpdateData (TRUE);
	OnFloatKillFocus (m_EditTranslucency, &m_Translucency, 0, "255.0");

	if(m_Translucency < 0.0f)
	{
		m_Translucency	=0.0f;
	}
	else if(m_Translucency > 255.0f)
	{
		m_Translucency	=255.0f;
	}
	SelFaceList_Enum (m_pDoc->pSelFaces, ::ChangeTranslucency, &m_Translucency);
	AssignCurrentToViews ();
}

static geBoolean FlipVertical (Face *pFace, void *)
{
	float xScale, yScale;

	Face_GetTextureScale (pFace, &xScale, &yScale);
	Face_SetTextureScale (pFace, xScale, -yScale);
	return GE_TRUE;
}

//	Flip it vertical by inverting the Y scale sign...
void CFaceAttributesDialog::OnFlipvertical() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	UpdateData(TRUE);

	m_TextureYScale = -m_TextureYScale;

	UpdateData(FALSE);

	SelFaceList_Enum (m_pDoc->pSelFaces, FlipVertical, NULL);

	AssignCurrentToViews();
}

static geBoolean FlipHorizontal (Face *pFace, void *)
{
	float xScale, yScale;

	Face_GetTextureScale (pFace, &xScale, &yScale);
	Face_SetTextureScale (pFace, -xScale, yScale);
	return GE_TRUE;
}

//	Same here except flip it horizontal...
void CFaceAttributesDialog::OnFliphorizontal() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	UpdateData(TRUE);

	m_TextureXScale = -m_TextureXScale;

	UpdateData(FALSE);

	SelFaceList_Enum (m_pDoc->pSelFaces, FlipHorizontal, NULL);

	AssignCurrentToViews();
}

static geBoolean SetLight (Face *pFace, void *lParam)
{
	BOOL *pLight = (BOOL *)lParam;

	Face_SetLight (pFace, *pLight);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnFacelight( void ) 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	UpdateData (TRUE);
	GetDlgItem( IDC_FACELIGHTINTENSITY )->EnableWindow( m_Light ) ;
	SelFaceList_Enum (m_pDoc->pSelFaces, SetLight, &m_Light);
	AssignCurrentToViews ();
}


static geBoolean SetMirror (Face *pFace, void *lParam)
{
	BOOL *pMirror = (BOOL *)lParam;

	Face_SetMirror (pFace, *pMirror);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnFacemirror() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, SetMirror, &m_Mirror);
	AssignCurrentToViews ();
}

static geBoolean SetSky (Face *pFace, void *lParam)
{
	BOOL *pSky = (BOOL *)lParam;

	Face_SetSky (pFace, *pSky);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnFacesky() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, SetSky, &m_Sky);
	AssignCurrentToViews ();
}

static geBoolean SetFullBright (Face *pFace, void *lParam)
{
	BOOL *pFullBright = (BOOL *)lParam;

	Face_SetFullBright (pFace, *pFullBright);
	return GE_TRUE;
}

void CFaceAttributesDialog::SetShadingChecks ()
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();

	Face *pFace = SelFaceList_GetFace (m_pDoc->pSelFaces, 0);

	m_FullBright	=Face_IsFullBright (pFace);
	m_Gouraud		=Face_IsGouraud (pFace);
	m_Flat			=Face_IsFlat (pFace);
	UpdateData (FALSE);
}

void CFaceAttributesDialog::OnFacefullbright() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, ::SetFullBright, &m_FullBright);
	SetShadingChecks ();
	AssignCurrentToViews ();
}

static geBoolean SetGouraud (Face *pFace, void *lParam)
{
	BOOL *pGouraud = (BOOL *)lParam;

	Face_SetGouraud (pFace, *pGouraud);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnFacegouraud() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, ::SetGouraud, &m_Gouraud);
	SetShadingChecks ();
	AssignCurrentToViews ();
}

static geBoolean SetFlat (Face *pFace, void *lParam)
{
	BOOL *pFlat = (BOOL *)lParam;

	Face_SetFlat (pFace, *pFlat);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnFaceflat() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, ::SetFlat, &m_Flat);
	SetShadingChecks ();
	AssignCurrentToViews ();
}

static geBoolean SetTextureLock (Face *pFace, void *lParam)
{
	BOOL *pTextureLock = (BOOL *)lParam;

	Face_SetTextureLock (pFace, *pTextureLock);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnTexturelock() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, ::SetTextureLock, &m_TextureLock);
	AssignCurrentToViews ();
}

static geBoolean SetTransparent (Face *pFace, void *lParam)
{
	 BOOL *pTransparent = (BOOL *)lParam;

	Face_SetTransparent (pFace, *pTransparent);
	return GE_TRUE;
}

void CFaceAttributesDialog::OnTransparent() 
{
	if (m_pDoc == NULL)
		m_pDoc = CGlobals::GetActiveDocument();
	
	UpdateData (TRUE);
	SelFaceList_Enum (m_pDoc->pSelFaces, ::SetTransparent, &m_Transparent);
	AssignCurrentToViews ();
}

void CFaceAttributesDialog::OnOK ()
{
	// do nothing...don't want to close the thing, ya know...
}

void CFaceAttributesDialog::OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized  )
{
	CDialog::OnActivate( nState, pWndOther, bMinimized ) ;
}

BOOL CFaceAttributesDialog::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
{
	switch( nID )
	{
		case IDC_FACELIGHT:
			OnFacelight() ;
			break;
	}
	return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}




void CFaceAttributesDialog::OnFaceApplybtn() 
{
//	m_pDoc->mpMainFrame->UpdateMainControls();
	
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -