668 lines
29 KiB
C++
668 lines
29 KiB
C++
/*
|
|
** Command & Conquer Generals Zero Hour(tm)
|
|
** Copyright 2025 Electronic Arts Inc.
|
|
**
|
|
** This program is free software: you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation, either version 3 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/***********************************************************************************************
|
|
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : Max2W3d *
|
|
* *
|
|
* $Archive:: /Commando/Code/Tools/max2w3d/GameMtlTextureDlg.cpp $*
|
|
* *
|
|
* Author:: Greg Hjelstrom *
|
|
* *
|
|
* $Modtime:: 8/14/00 1:47p $*
|
|
* *
|
|
* $Revision:: 15 $*
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* GameMtlTextureDlg::GameMtlTextureDlg -- constructor *
|
|
* GameMtlTextureDlg::~GameMtlTextureDlg -- destructor *
|
|
* GameMtlTextureDlg::Dialog_Proc -- windows message handler *
|
|
* GameMtlTextureDlg::ReloadDialog -- reload the contents of all of the controls in this dia *
|
|
* GameMtlTextureDlg::ActivateDlg -- activate/deactivate this dialog *
|
|
* GameMtlTextureDlg::Enable_Stage -- enable or disable a texture stage *
|
|
* GameMtlTextureDlg::Update_Texture_Buttons -- update the texture buttons text *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
|
|
|
|
|
|
|
|
#include "GameMtlTextureDlg.h"
|
|
#include "GameMtl.h"
|
|
#include "dllmain.h"
|
|
#include "resource.h"
|
|
#include <Max.h>
|
|
#include <bmmlib.h>
|
|
#include <stdmat.h>
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::GameMtlTextureDlg -- constructor *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
GameMtlTextureDlg::GameMtlTextureDlg
|
|
(
|
|
HWND parent,
|
|
IMtlParams * imp,
|
|
GameMtl * mtl,
|
|
int pass
|
|
) :
|
|
GameMtlFormClass(imp,mtl,pass)
|
|
{
|
|
Stage0FramesSpin = NULL;
|
|
Stage1FramesSpin = NULL;
|
|
Stage0RateSpin = NULL;
|
|
Stage1RateSpin = NULL;
|
|
|
|
Stage0PublishButton = NULL;
|
|
Stage1PublishButton = NULL;
|
|
Stage0ClampUButton = NULL;
|
|
Stage1ClampUButton = NULL;
|
|
Stage0ClampVButton = NULL;
|
|
Stage1ClampVButton = NULL;
|
|
Stage0NoLODButton = NULL;
|
|
Stage1NoLODButton = NULL;
|
|
Stage0AlphaBitmapButton = NULL;
|
|
Stage1AlphaBitmapButton = NULL;
|
|
Stage0DisplayButton = NULL;
|
|
Stage1DisplayButton = NULL;
|
|
|
|
if (mtl->Get_Shader_Type() == GameMtl::STE_PC_SHADER) {
|
|
Create_Form(parent,IDD_GAMEMTL_TEXTURES);
|
|
} else {
|
|
// Use the PS2 dialog. It is the same but it disables some functions that aren't
|
|
// supported yet.
|
|
Create_Form(parent,IDD_GAMEMTL_PS2_TEXTURES);
|
|
}
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::~GameMtlTextureDlg -- destructor *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
GameMtlTextureDlg::~GameMtlTextureDlg()
|
|
{
|
|
assert(Stage0FramesSpin && Stage1FramesSpin && Stage0RateSpin && Stage1RateSpin);
|
|
ReleaseISpinner(Stage0FramesSpin);
|
|
ReleaseISpinner(Stage1FramesSpin);
|
|
ReleaseISpinner(Stage0RateSpin);
|
|
ReleaseISpinner(Stage1RateSpin);
|
|
|
|
ReleaseICustButton(Stage0PublishButton);
|
|
ReleaseICustButton(Stage1PublishButton);
|
|
ReleaseICustButton(Stage0ClampUButton);
|
|
ReleaseICustButton(Stage1ClampUButton);
|
|
ReleaseICustButton(Stage0ClampVButton);
|
|
ReleaseICustButton(Stage1ClampVButton);
|
|
ReleaseICustButton(Stage0NoLODButton);
|
|
ReleaseICustButton(Stage1NoLODButton);
|
|
ReleaseICustButton(Stage0AlphaBitmapButton);
|
|
ReleaseICustButton(Stage1AlphaBitmapButton);
|
|
ReleaseICustButton(Stage0DisplayButton);
|
|
ReleaseICustButton(Stage1DisplayButton);
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::Dialog_Proc -- windows message handler *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
* 10/6/1999 MLL: Turned off the display button when the texture is turned off. *
|
|
*=============================================================================================*/
|
|
BOOL GameMtlTextureDlg::Dialog_Proc (HWND dlg_wnd, UINT message, WPARAM wparam, LPARAM lparam)
|
|
{
|
|
int cursel;
|
|
int id = LOWORD(wparam);
|
|
int code = HIWORD(wparam);
|
|
|
|
switch (message)
|
|
{
|
|
case WM_INITDIALOG:
|
|
{
|
|
Stage0FramesSpin = SetupIntSpinner( dlg_wnd,
|
|
IDC_STAGE0_FRAMES_SPIN,
|
|
IDC_STAGE0_FRAMES_EDIT,
|
|
1,999,
|
|
TheMtl->Get_Texture_Frame_Count(PassIndex,0) );
|
|
|
|
Stage0RateSpin = SetupFloatSpinner( dlg_wnd,
|
|
IDC_STAGE0_RATE_SPIN,
|
|
IDC_STAGE0_RATE_EDIT,
|
|
0.0f,60.0f,
|
|
TheMtl->Get_Texture_Frame_Rate(PassIndex,0),
|
|
1.0f );
|
|
|
|
Stage1FramesSpin = SetupIntSpinner( dlg_wnd,
|
|
IDC_STAGE1_FRAMES_SPIN,
|
|
IDC_STAGE1_FRAMES_EDIT,
|
|
1,999,
|
|
TheMtl->Get_Texture_Frame_Count(PassIndex,1) );
|
|
|
|
Stage1RateSpin = SetupFloatSpinner( dlg_wnd,
|
|
IDC_STAGE1_RATE_SPIN,
|
|
IDC_STAGE1_RATE_EDIT,
|
|
0.0f,60.0f,
|
|
TheMtl->Get_Texture_Frame_Rate(PassIndex,1),
|
|
1.0f );
|
|
|
|
Stage0PublishButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_PUBLISH_BUTTON));
|
|
Stage0PublishButton->SetType(CBT_CHECK);
|
|
Stage0PublishButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0PublishButton->SetCheck(TheMtl->Get_Texture_Publish(PassIndex,0));
|
|
Stage0PublishButton->SetText(Get_String(IDS_PUBLISH));
|
|
|
|
Stage1PublishButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_PUBLISH_BUTTON));
|
|
Stage1PublishButton->SetType(CBT_CHECK);
|
|
Stage1PublishButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1PublishButton->SetCheck(TheMtl->Get_Texture_Publish(PassIndex,1));
|
|
Stage1PublishButton->SetText(Get_String(IDS_PUBLISH));
|
|
|
|
Stage0ClampUButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_CLAMP_U_BUTTON));
|
|
Stage0ClampUButton->SetType(CBT_CHECK);
|
|
Stage0ClampUButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0ClampUButton->SetCheck(TheMtl->Get_Texture_Clamp_U(PassIndex,0));
|
|
Stage0ClampUButton->SetText(Get_String(IDS_CLAMP_U));
|
|
|
|
Stage1ClampUButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_CLAMP_U_BUTTON));
|
|
Stage1ClampUButton->SetType(CBT_CHECK);
|
|
Stage1ClampUButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1ClampUButton->SetCheck(TheMtl->Get_Texture_Clamp_U(PassIndex,1));
|
|
Stage1ClampUButton->SetText(Get_String(IDS_CLAMP_U));
|
|
|
|
Stage0ClampVButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_CLAMP_V_BUTTON));
|
|
Stage0ClampVButton->SetType(CBT_CHECK);
|
|
Stage0ClampVButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0ClampVButton->SetCheck(TheMtl->Get_Texture_Clamp_V(PassIndex,0));
|
|
Stage0ClampVButton->SetText(Get_String(IDS_CLAMP_V));
|
|
|
|
Stage1ClampVButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_CLAMP_V_BUTTON));
|
|
Stage1ClampVButton->SetType(CBT_CHECK);
|
|
Stage1ClampVButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1ClampVButton->SetCheck(TheMtl->Get_Texture_Clamp_V(PassIndex,1));
|
|
Stage1ClampVButton->SetText(Get_String(IDS_CLAMP_V));
|
|
|
|
Stage0NoLODButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_NOLOD_BUTTON));
|
|
Stage0NoLODButton->SetType(CBT_CHECK);
|
|
Stage0NoLODButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0NoLODButton->SetCheck(TheMtl->Get_Texture_No_LOD(PassIndex,0));
|
|
Stage0NoLODButton->SetText(Get_String(IDS_NO_LOD));
|
|
|
|
Stage1NoLODButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_NOLOD_BUTTON));
|
|
Stage1NoLODButton->SetType(CBT_CHECK);
|
|
Stage1NoLODButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1NoLODButton->SetCheck(TheMtl->Get_Texture_No_LOD(PassIndex,0));
|
|
Stage1NoLODButton->SetText(Get_String(IDS_NO_LOD));
|
|
|
|
Stage0AlphaBitmapButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_ALPHA_BITMAP_BUTTON));
|
|
Stage0AlphaBitmapButton->SetType(CBT_CHECK);
|
|
Stage0AlphaBitmapButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0AlphaBitmapButton->SetCheck(TheMtl->Get_Texture_Alpha_Bitmap(PassIndex,0));
|
|
Stage0AlphaBitmapButton->SetText(Get_String(IDS_ALPHA_BITMAP));
|
|
|
|
Stage1AlphaBitmapButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_ALPHA_BITMAP_BUTTON));
|
|
Stage1AlphaBitmapButton->SetType(CBT_CHECK);
|
|
Stage1AlphaBitmapButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1AlphaBitmapButton->SetCheck(TheMtl->Get_Texture_Alpha_Bitmap(PassIndex,1));
|
|
Stage1AlphaBitmapButton->SetText(Get_String(IDS_ALPHA_BITMAP));
|
|
|
|
Stage0DisplayButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE0_DISPLAY_BUTTON));
|
|
Stage0DisplayButton->SetType(CBT_CHECK);
|
|
Stage0DisplayButton->SetHighlightColor(GREEN_WASH);
|
|
Stage0DisplayButton->SetCheck(TheMtl->Get_Texture_Display(PassIndex,0));
|
|
Stage0DisplayButton->SetText(Get_String(IDS_DISPLAY));
|
|
|
|
Stage1DisplayButton = GetICustButton(GetDlgItem(dlg_wnd, IDC_STAGE1_DISPLAY_BUTTON));
|
|
Stage1DisplayButton->SetType(CBT_CHECK);
|
|
Stage1DisplayButton->SetHighlightColor(GREEN_WASH);
|
|
Stage1DisplayButton->SetCheck(TheMtl->Get_Texture_Display(PassIndex,1));
|
|
Stage1DisplayButton->SetText(Get_String(IDS_DISPLAY));
|
|
break;
|
|
}
|
|
|
|
case WM_LBUTTONDOWN:
|
|
case WM_LBUTTONUP:
|
|
case WM_MOUSEMOVE:
|
|
{
|
|
IParams->RollupMouseMessage(dlg_wnd,message,wparam,lparam);
|
|
return FALSE;
|
|
}
|
|
|
|
case CC_SPINNER_CHANGE:
|
|
{
|
|
TheMtl->Set_Texture_Frame_Count( PassIndex, 0,
|
|
Stage0FramesSpin->GetIVal());
|
|
|
|
TheMtl->Set_Texture_Frame_Rate( PassIndex, 0,
|
|
Stage0RateSpin->GetFVal());
|
|
|
|
TheMtl->Set_Texture_Frame_Count( PassIndex, 1,
|
|
Stage1FramesSpin->GetIVal());
|
|
|
|
TheMtl->Set_Texture_Frame_Rate( PassIndex, 1,
|
|
Stage1RateSpin->GetFVal());
|
|
break;
|
|
}
|
|
|
|
case CC_SPINNER_BUTTONUP:
|
|
{
|
|
TheMtl->Notify_Changed();
|
|
break;
|
|
}
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
switch (id)
|
|
{
|
|
case IDC_STAGE0_BUTTON:
|
|
{
|
|
BitmapInfo bmi;
|
|
BitmapTex * texture;
|
|
|
|
if (TheManager->SelectFileInput(&bmi, m_hWnd)) {
|
|
texture = NewDefaultBitmapTex();
|
|
if (texture) {
|
|
|
|
BOOL disp = TheMtl->Get_Texture_Display(PassIndex,0);
|
|
if (disp) {
|
|
TheMtl->Set_Texture_Display(PassIndex,0,FALSE);
|
|
}
|
|
|
|
texture->SetMapName((char *)bmi.Name());
|
|
int texmap_index = TheMtl->pass_stage_to_texmap_index(PassIndex,0);
|
|
TheMtl->SetSubTexmap(texmap_index,texture);
|
|
Update_Texture_Buttons();
|
|
TheMtl->Notify_Changed();
|
|
|
|
if (disp) {
|
|
TheMtl->Set_Texture_Display(PassIndex,0,TRUE);
|
|
TheMtl->Notify_Changed();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE1_BUTTON:
|
|
{
|
|
BitmapInfo bmi;
|
|
BitmapTex * texture;
|
|
|
|
if (TheManager->SelectFileInput(&bmi, m_hWnd)) {
|
|
texture = NewDefaultBitmapTex();
|
|
if (texture) {
|
|
|
|
BOOL disp = TheMtl->Get_Texture_Display(PassIndex,1);
|
|
if (disp) {
|
|
TheMtl->Set_Texture_Display(PassIndex,1,FALSE);
|
|
}
|
|
|
|
texture->SetMapName((char *)bmi.Name());
|
|
int texmap_index = TheMtl->pass_stage_to_texmap_index(PassIndex,1);
|
|
TheMtl->SetSubTexmap(texmap_index,texture);
|
|
Update_Texture_Buttons();
|
|
TheMtl->Notify_Changed();
|
|
|
|
if (disp) {
|
|
TheMtl->Set_Texture_Display(PassIndex,1,TRUE);
|
|
TheMtl->Notify_Changed();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE0_ENABLE:
|
|
{
|
|
int checkbox = GetCheckBox(dlg_wnd,IDC_STAGE0_ENABLE);
|
|
Enable_Stage(0,(checkbox == TRUE ? true : false) );
|
|
|
|
// If the texture stage is turned off, turn off the Display button so that it won't
|
|
// show up in the viewport.
|
|
if (checkbox == FALSE) {
|
|
|
|
TheMtl->Set_Texture_Display(PassIndex, 0, FALSE);
|
|
TheMtl->Notify_Changed();
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE1_ENABLE:
|
|
{
|
|
int checkbox = GetCheckBox(dlg_wnd,IDC_STAGE1_ENABLE);
|
|
|
|
Enable_Stage(1,(checkbox == TRUE ? true : false) );
|
|
|
|
// If the texture stage is turned off, turn off the Display button so that it won't
|
|
// show up in the viewport.
|
|
if (checkbox == FALSE) {
|
|
|
|
TheMtl->Set_Texture_Display(PassIndex, 1, FALSE);
|
|
TheMtl->Notify_Changed();
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE0_PUBLISH_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Publish(PassIndex,0,(Stage0PublishButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE1_PUBLISH_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Publish(PassIndex,1,(Stage1PublishButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
|
|
case IDC_STAGE0_CLAMP_U_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Clamp_U(PassIndex,0,(Stage0ClampUButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE1_CLAMP_U_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Clamp_U(PassIndex,1,(Stage1ClampUButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE0_CLAMP_V_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Clamp_V(PassIndex,0,(Stage0ClampVButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE1_CLAMP_V_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Clamp_V(PassIndex,1,(Stage1ClampVButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE0_NOLOD_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_No_LOD(PassIndex,0,(Stage0NoLODButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE1_NOLOD_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_No_LOD(PassIndex,1,(Stage1NoLODButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE0_ALPHA_BITMAP_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Alpha_Bitmap(PassIndex,0,(Stage0AlphaBitmapButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE1_ALPHA_BITMAP_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Alpha_Bitmap(PassIndex,1,(Stage0AlphaBitmapButton->IsChecked() ? TRUE : FALSE));
|
|
break;
|
|
}
|
|
case IDC_STAGE0_DISPLAY_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Display(PassIndex,0,(Stage0DisplayButton->IsChecked() ? TRUE : FALSE));
|
|
TheMtl->Notify_Changed();
|
|
break;
|
|
}
|
|
case IDC_STAGE1_DISPLAY_BUTTON:
|
|
{
|
|
TheMtl->Set_Texture_Display(PassIndex,1,(Stage1DisplayButton->IsChecked() ? TRUE : FALSE));
|
|
TheMtl->Notify_Changed();
|
|
break;
|
|
}
|
|
case IDC_STAGE0_ANIM_COMBO:
|
|
{
|
|
if (code == CBN_SELCHANGE) {
|
|
cursel = SendDlgItemMessage(dlg_wnd,IDC_STAGE0_ANIM_COMBO,CB_GETCURSEL,0,0);
|
|
TheMtl->Set_Texture_Anim_Type(PassIndex,0,cursel);
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE1_ANIM_COMBO:
|
|
{
|
|
if (code == CBN_SELCHANGE) {
|
|
cursel = SendDlgItemMessage(dlg_wnd,IDC_STAGE1_ANIM_COMBO,CB_GETCURSEL,0,0);
|
|
TheMtl->Set_Texture_Anim_Type(PassIndex,1,cursel);
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE0_HINT_COMBO:
|
|
{
|
|
if (code == CBN_SELCHANGE) {
|
|
cursel = SendDlgItemMessage(dlg_wnd,IDC_STAGE0_HINT_COMBO,CB_GETCURSEL,0,0);
|
|
TheMtl->Set_Texture_Hint(PassIndex,0,cursel);
|
|
}
|
|
break;
|
|
}
|
|
case IDC_STAGE1_HINT_COMBO:
|
|
{
|
|
if (code == CBN_SELCHANGE) {
|
|
cursel = SendDlgItemMessage(dlg_wnd,IDC_STAGE1_HINT_COMBO,CB_GETCURSEL,0,0);
|
|
TheMtl->Set_Texture_Hint(PassIndex,1,cursel);
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::ReloadDialog -- reload the contents of all of the controls in this dialo *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
void GameMtlTextureDlg::ReloadDialog(void)
|
|
{
|
|
DebugPrint("GameMtlTextureDlg::ReloadDialog\n");
|
|
assert(Stage0FramesSpin && Stage1FramesSpin && Stage0RateSpin && Stage1RateSpin);
|
|
Stage0FramesSpin->SetValue(TheMtl->Get_Texture_Frame_Count(PassIndex,0),FALSE);
|
|
Stage1FramesSpin->SetValue(TheMtl->Get_Texture_Frame_Count(PassIndex,1),FALSE);
|
|
Stage0RateSpin->SetValue(TheMtl->Get_Texture_Frame_Rate(PassIndex,0),FALSE);
|
|
Stage1RateSpin->SetValue(TheMtl->Get_Texture_Frame_Rate(PassIndex,1),FALSE);
|
|
|
|
SendDlgItemMessage( m_hWnd,
|
|
IDC_STAGE0_ANIM_COMBO,
|
|
CB_SETCURSEL,
|
|
TheMtl->Get_Texture_Anim_Type(PassIndex,0), 0 );
|
|
|
|
SendDlgItemMessage( m_hWnd,
|
|
IDC_STAGE1_ANIM_COMBO,
|
|
CB_SETCURSEL,
|
|
TheMtl->Get_Texture_Anim_Type(PassIndex,1), 0 );
|
|
|
|
SendDlgItemMessage( m_hWnd,
|
|
IDC_STAGE0_HINT_COMBO,
|
|
CB_SETCURSEL,
|
|
TheMtl->Get_Texture_Hint(PassIndex,0), 0 );
|
|
|
|
SendDlgItemMessage( m_hWnd,
|
|
IDC_STAGE1_HINT_COMBO,
|
|
CB_SETCURSEL,
|
|
TheMtl->Get_Texture_Hint(PassIndex,1), 0 );
|
|
|
|
SetCheckBox(m_hWnd,IDC_STAGE0_ENABLE, TheMtl->Get_Texture_Enable(PassIndex,0));
|
|
SetCheckBox(m_hWnd,IDC_STAGE1_ENABLE, TheMtl->Get_Texture_Enable(PassIndex,1));
|
|
|
|
Stage0PublishButton->SetCheck(TheMtl->Get_Texture_Publish(PassIndex,0));
|
|
Stage1PublishButton->SetCheck(TheMtl->Get_Texture_Publish(PassIndex,1));
|
|
Stage0ClampUButton->SetCheck(TheMtl->Get_Texture_Clamp_U(PassIndex,0));
|
|
Stage1ClampUButton->SetCheck(TheMtl->Get_Texture_Clamp_U(PassIndex,1));
|
|
Stage0ClampVButton->SetCheck(TheMtl->Get_Texture_Clamp_V(PassIndex,0));
|
|
Stage1ClampVButton->SetCheck(TheMtl->Get_Texture_Clamp_V(PassIndex,1));
|
|
Stage0NoLODButton->SetCheck(TheMtl->Get_Texture_No_LOD(PassIndex,0));
|
|
Stage1NoLODButton->SetCheck(TheMtl->Get_Texture_No_LOD(PassIndex,1));
|
|
Stage0AlphaBitmapButton->SetCheck(TheMtl->Get_Texture_Alpha_Bitmap(PassIndex,0));
|
|
Stage1AlphaBitmapButton->SetCheck(TheMtl->Get_Texture_Alpha_Bitmap(PassIndex,1));
|
|
Stage0DisplayButton->SetCheck(TheMtl->Get_Texture_Display(PassIndex,0));
|
|
Stage1DisplayButton->SetCheck(TheMtl->Get_Texture_Display(PassIndex,1));
|
|
|
|
Update_Texture_Buttons();
|
|
|
|
Enable_Stage(0,TheMtl->Get_Texture_Enable(PassIndex,0));
|
|
Enable_Stage(1,TheMtl->Get_Texture_Enable(PassIndex,1));
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::ActivateDlg -- activate/deactivate this dialog *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
void GameMtlTextureDlg::ActivateDlg(BOOL onOff)
|
|
{
|
|
// no color swatches to activate.
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::Enable_Stage -- enable or disable a texture stage *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
void GameMtlTextureDlg::Enable_Stage(int stage,BOOL onoff)
|
|
{
|
|
assert((stage >= 0) && (stage < W3dMaterialClass::MAX_STAGES));
|
|
TheMtl->Set_Texture_Enable(PassIndex,stage,(onoff == TRUE ? true : false));
|
|
|
|
if (stage == 0) {
|
|
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_BUTTON),onoff);
|
|
|
|
// Turn these off if it is a playstation 2 shader.
|
|
// These aren't supported yet.
|
|
if (TheMtl->Get_Shader_Type() == GameMtl::STE_PC_SHADER) {
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_RATE_SPIN), onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_RATE_EDIT), onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_FRAMES_SPIN), onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_FRAMES_EDIT), onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_ANIM_COMBO), onoff);
|
|
} else {
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_RATE_SPIN), FALSE);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_RATE_EDIT), FALSE);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_FRAMES_SPIN), FALSE);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_FRAMES_EDIT), FALSE);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_ANIM_COMBO), FALSE);
|
|
}
|
|
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_PUBLISH_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_CLAMP_U_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_CLAMP_V_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_NOLOD_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_ALPHA_BITMAP_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_DISPLAY_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE0_HINT_COMBO),onoff);
|
|
|
|
} else {
|
|
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_RATE_SPIN),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_RATE_EDIT),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_FRAMES_SPIN),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_FRAMES_EDIT),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_PUBLISH_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_CLAMP_U_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_CLAMP_V_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_NOLOD_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_ALPHA_BITMAP_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_DISPLAY_BUTTON),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_ANIM_COMBO),onoff);
|
|
EnableWindow(GetDlgItem(m_hWnd,IDC_STAGE1_HINT_COMBO),onoff);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/***********************************************************************************************
|
|
* GameMtlTextureDlg::Update_Texture_Buttons -- update the texture buttons text *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* WARNINGS: *
|
|
* *
|
|
* HISTORY: *
|
|
* 11/23/98 GTH : Created. *
|
|
*=============================================================================================*/
|
|
void GameMtlTextureDlg::Update_Texture_Buttons(void)
|
|
{
|
|
Texmap * texmap;
|
|
texmap = TheMtl->Get_Texture(PassIndex,0);
|
|
TSTR filename;
|
|
|
|
if (texmap) {
|
|
SplitPathFile(texmap->GetFullName(),NULL,&filename);
|
|
SetDlgItemText(m_hWnd, IDC_STAGE0_BUTTON,filename);
|
|
} else {
|
|
SetDlgItemText(m_hWnd, IDC_STAGE0_BUTTON,Get_String(IDS_NONE));
|
|
}
|
|
|
|
texmap = TheMtl->Get_Texture(PassIndex,1);
|
|
if (texmap) {
|
|
SplitPathFile(texmap->GetFullName(),NULL,&filename);
|
|
SetDlgItemText(m_hWnd, IDC_STAGE1_BUTTON,filename);
|
|
} else {
|
|
SetDlgItemText(m_hWnd, IDC_STAGE1_BUTTON,Get_String(IDS_NONE));
|
|
}
|
|
}
|