Files
firestorm/Gameleap/code/mw4/Tools/3DSPlugins/AnimationSuite/EditBatch.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

897 lines
20 KiB
C++

// EditBatch.cpp : implementation file
//
#include "stdafx.h"
#ifdef STRICT // Already defined by stdafx,
#undef STRICT // so we avoid warning linking msg
#endif
#ifdef _MBCS // The same as above
#undef _MBCS
#endif
#include "animationsuite.h"
#include <Stuff\StuffHeaders.hpp>
#include "EditBatch.h"
#include "DlgSelectMegatextures.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEditBatch dialog
CEditBatch::CEditBatch(Page *page,CWnd* pParent /*=NULL*/)
: CDialog(CEditBatch::IDD, pParent)
{
//{{AFX_DATA_INIT(CEditBatch)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pPage = page;
}
void CEditBatch::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditBatch)
DDX_Control(pDX, IDC_EDIT_MEGANAMES, m_MegaNames);
DDX_Control(pDX, IDC_EDIT_HINT, m_Hint);
DDX_Control(pDX, IDC_CHECK_CROSSFADE, m_checkFade);
DDX_Control(pDX, IDC_CHECK_CAGE, m_checkCage);
DDX_Control(pDX, IDC_EDIT_CAGE, m_Cage);
DDX_Control(pDX, IDC_CHECK_ANIM, m_checkAnim);
DDX_Control(pDX, IDC_CHECK_OBB, m_checkOBB);
DDX_Control(pDX, IDC_EDIT_OBB, m_Obb);
DDX_Control(pDX, IDC_EDIT_SKEL, m_Skel);
DDX_Control(pDX, IDC_EDIT_ANIM, m_Anim);
DDX_Control(pDX, IDC_EDIT_PATH, m_Path);
DDX_Control(pDX, IDC_LIST_CLASS, m_listclass);
DDX_Control(pDX, IDC_ALIGN_X, m_checkAlignX);
DDX_Control(pDX, IDC_ALIGN_Y, m_checkAlignY);
DDX_Control(pDX, IDC_ALIGN_STARTLOD, m_comboStartLOD);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditBatch, CDialog)
//{{AFX_MSG_MAP(CEditBatch)
ON_BN_CLICKED(IDC_BUTTON_LOD0, OnButtonLod0)
ON_BN_CLICKED(IDC_BUTTON_LOD1, OnButtonLod1)
ON_BN_CLICKED(IDC_BUTTON_LOD2, OnButtonLod2)
ON_BN_CLICKED(IDC_BUTTON_LOD4, OnButtonLod4)
ON_BN_CLICKED(IDC_BUTTON_LOD5, OnButtonLod5)
ON_BN_CLICKED(IDC_BUTTON_LODDAM0, OnButtonLoddam0)
ON_BN_CLICKED(IDC_BUTTON_LODDAM1, OnButtonLoddam1)
ON_BN_CLICKED(IDC_BUTTON_LODDAM2, OnButtonLoddam2)
ON_BN_CLICKED(IDC_BUTTON_LODDAM3, OnButtonLoddam3)
ON_BN_CLICKED(IDC_BUTTON_LODDAM4, OnButtonLoddam4)
ON_BN_CLICKED(IDC_BUTTON_LODDAM5, OnButtonLoddam5)
ON_BN_CLICKED(IDC_BUTTON_LOD3, OnButtonLod3)
ON_BN_CLICKED(IDC_CHECK_ANIM, OnCheckAnim)
ON_BN_CLICKED(IDC_CHECK_OBB, OnCheckObb)
ON_BN_CLICKED(IDC_BROWSE_PATH, OnBrowsePath)
ON_BN_CLICKED(IDC_BROWSE_SKEL, OnBrowseSkel)
ON_BN_CLICKED(IDC_BROWSE_ANIM, OnBrowseAnim)
ON_BN_CLICKED(IDC_BROWSE_OBB, OnBrowseObb)
ON_BN_CLICKED(IDC_BROWSE_CAGE, OnBrowseCage)
ON_BN_CLICKED(IDC_CHECK_CAGE, OnCheckCage)
ON_BN_CLICKED(IDC_RADIO_CHAR, OnRadioChar)
ON_BN_CLICKED(IDC_RADIO_SHAPE, OnRadioShape)
ON_BN_CLICKED(IDC_CHECK_CROSSFADE, OnCheckCrossfade)
ON_BN_CLICKED(IDC_BROWSE_HINT, OnBrowseHint)
ON_BN_CLICKED(IDC_SELECT_MEGANAMES, OnSelectMeganames)
ON_CBN_SELCHANGE(IDC_ALIGN_STARTLOD, OnSelectStartLOD)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditBatch message handlers
CString g_szbrowsepath;
static int CALLBACK BrowseCallbackProc1(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
RECT rect;
//
//Center the browse dialog on the screen...
//
switch (uMsg)
{
case BFFM_INITIALIZED:
{
SendMessage(hWnd,BFFM_SETSELECTION,TRUE,(LPARAM)(LPCTSTR)g_szbrowsepath);
if (GetWindowRect(hWnd, &rect))
{
SetWindowPos(hWnd,
HWND_TOP,
(GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) >> 1,
(GetSystemMetrics(SM_CYSCREEN) - (rect.bottom - rect.top)) >> 1,
0,
0,
SWP_NOSIZE);
}
}
}
return 0;
}
CString BrowseDirectory(const char *strCurrent,CWnd *pWnd)
{
CString str;
TCHAR szBuffer[MAX_PATH];
LPITEMIDLIST pidlBrowse,pidlRoot;
BROWSEINFO bi;
LPMALLOC lpMalloc;
SHGetMalloc(&lpMalloc);
ASSERT(lpMalloc);
bi.hwndOwner = pWnd->GetSafeHwnd();
// Get the ID for the "My Computer" root folder
SHGetSpecialFolderLocation(pWnd->GetSafeHwnd(),CSIDL_DRIVES,&pidlRoot);
bi.pidlRoot = pidlRoot;
bi.pszDisplayName = szBuffer;
// Localize the descriptive text
bi.lpszTitle = "Select a path";
// BIF_EDITBOX and BIF_VALIDATE are for versions 4.71 and later, they
// might be ignored by older versions
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;// | BIF_EDITBOX;// | BIF_USENEWUI;// | BIF_VALIDATE;
bi.lParam = (LPARAM)pWnd;
bi.iImage = NULL;
bi.lpfn = BrowseCallbackProc1;
bi.lParam = (LPARAM)strCurrent;
g_szbrowsepath = strCurrent;
//
//Call the Windows shell folder browsing routine...
//
pidlBrowse = SHBrowseForFolder(&bi);
if (NULL != pidlBrowse)
{
if (SHGetPathFromIDList(pidlBrowse, szBuffer))
{
if ('\\' == szBuffer[lstrlen(szBuffer)-1])
szBuffer[lstrlen(szBuffer)-1] = '\0';
str = CString(szBuffer);
}
else
str = "";
//
//Free up shell memory used...
//
lpMalloc->Free(pidlBrowse);
}
else
str = "";
lpMalloc->Free(pidlRoot);
lpMalloc->Release();
return str;
}
CString szClasses[] =
{
"MechWarrior4::Airplane",
"MechWarrior4::Bridge",
"MechWarrior4::Building",
"MechWarrior4::Boat",
"MechWarrior4::Cultural",
"MechWarrior4::DropShip",
"MechWarrior4::Helicopter",
"MechWarrior4::HoverCraft",
"MechWarrior4::Mech",
"MechWarrior4::MFB",
"MechWarrior4::NonCom",
"MechWarrior4::Tank",
"MechWarrior4::Truck",
"MechWarrior4::Turret",
""
};
BOOL CEditBatch::OnInitDialog()
{
CDialog::OnInitDialog();
// Initialize the controls
int index=0;
while (szClasses[index] != "") {
m_listclass.InsertString(index, szClasses[index]);
index++;
}
const char *strclass;
if (m_pPage->GetEntry("Class",&strclass))
{
int index=0;
while (szClasses[index] != "") {
if (0==strnicmp(szClasses[index],strclass,strlen(szClasses[index])))
m_listclass.SetCurSel(index);
index++;
}
}
// Get the entries out of the page
const char *path;
if (m_pPage->GetEntry("path",&path))
{
m_Path.SetWindowText(path);
}
const char *lodSkel;
if (m_pPage->GetEntry("lodSkel",&lodSkel))
{
m_Skel.SetWindowText(lodSkel);
}
const char *anim;
if (m_pPage->GetEntry("anim",&anim))
{
this->m_checkAnim.SetCheck(1);
m_Anim.SetWindowText(anim);
}
else
{
m_Anim.EnableWindow(false);
}
const char *obb;
if (m_pPage->GetEntry("obb",&obb))
{
this->m_checkOBB.SetCheck(1);
m_Obb.SetWindowText(obb);
}
else
{
m_Obb.EnableWindow(false);
}
const char *cage;
if (m_pPage->GetEntry("Cage",&cage))
{
this->m_checkCage.SetCheck(1);
m_Cage.SetWindowText(cage);
}
else
{
m_Cage.EnableWindow(false);
}
CString strHint(path);
const char *hint=NULL;
if (m_pPage->GetEntry("Hint",&hint))
{
}
else
{
strHint.MakeLower();
int index = strHint.Find("\\content\\");
if (index>0)
{
strHint = strHint.Left(index);
strHint+="\\content\\textures\\textures.hint";
hint = strHint;
}
}
if (hint)
m_Hint.SetWindowText(hint);
const char *meganames;
if (m_pPage->GetEntry("MegaTextures",&meganames))
{
m_MegaNames.SetWindowText(meganames);
}
BYTE bChar = 0;
const char *lodChar[6];
for (int x=0;x<6;x++)
{
CString str;
str.Format("LODChar%d",x);
if (m_pPage->GetEntry(str,&lodChar[x]))
{
bChar |= 1<<x;
}
}
BYTE bShape = 0;
const char *lodShape[6];
for (x=0;x<6;x++)
{
CString str;
str.Format("LODShape%d",x);
if (m_pPage->GetEntry(str,&lodShape[x]))
{
bShape |= 1<<x;
}
}
if (bChar && bShape)
{
// We have a problem here
MessageBox("Both LODShape and LODChar specified, defaulting to LODShape (Shape export)",m_pPage->GetName(),MB_OK);
bChar = 0;
}
BYTE flags = 0;
const char **lod = NULL;
if (bChar)
{
flags = bChar;
lod = lodChar;
CButton *b = (CButton *)this->GetDlgItem(IDC_RADIO_CHAR);
b->SetCheck(1);
}
if (bShape)
{
flags = bShape;
lod = lodShape;
CButton *b = (CButton *)this->GetDlgItem(IDC_RADIO_SHAPE);
b->SetCheck(1);
m_Skel.EnableWindow(false);
}
for (x=0;x<6;x++)
{
if (flags & (1<<x))
{
this->SetDlgItemText(IDC_EDIT_LOD0+x,lod[x]);
}
}
BYTE bDam = 0;
const char *lodDam[6];
for (x=0;x<6;x++)
{
CString str;
str.Format("LodDam%d",x);
if (m_pPage->GetEntry(str,&lodDam[x]))
{
bDam &= 1<<x;
this->SetDlgItemText(IDC_EDIT_DAM0+x,lodDam[x]);
}
}
// Load billboarding stuff
m_comboStartLOD.ResetContent();
m_comboStartLOD.AddString("None");
m_comboStartLOD.AddString("LOD0");
m_comboStartLOD.AddString("LOD1");
m_comboStartLOD.AddString("LOD2");
m_comboStartLOD.AddString("LOD3");
m_comboStartLOD.AddString("LOD4");
m_comboStartLOD.AddString("LOD5");
m_comboStartLOD.SelectString(0, "None");
bool bFade = false;
const char *lodDist[6];
for (x=0;x<6;x++)
{
CString str;
str.Format("LodDist%d",x);
if (m_pPage->GetEntry(str,&lodDist[x]))
{
char dist[6][4][MAX_PATH];
::memset(dist, 0, 6*4*MAX_PATH);
int count = sscanf(lodDist[x],"%s %s %s %s",dist[x][0],dist[x][1],dist[x][2],dist[x][3]);
if (count>1)
bFade = true;
}
}
m_checkFade.SetCheck(bFade);
OnCheckCrossfade();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEditBatch::OnOK()
{
m_pPage->DeleteAllNotes();
int index = m_listclass.GetCurSel();
if (index>=0)
{
CString str;
m_listclass.GetText(index,str);
m_pPage->AppendEntry("Class",str);
}
else
{
MessageBox("You must select a Class for this export: Building, Mech, or Vehicle.","Batch Export",MB_OK);
return;
}
CString str;
this->m_Path.GetWindowText(str);
m_pPage->AppendEntry("Path",str);
//this->m_Skel.GetWindowText(str);
//m_pPage->AppendEntry("LODSkel",str);
CString lodstr;
CButton *b1 = (CButton *)this->GetDlgItem(IDC_RADIO_CHAR);
CButton *b2 = (CButton *)this->GetDlgItem(IDC_RADIO_SHAPE);
//this->m_Skel.GetWindowText(str);
//if (str.GetLength())
// m_pPage->AppendEntry("LODSkel",str);
if (b1->GetCheck())
{
lodstr = "LODChar";
this->m_Skel.GetWindowText(str);
m_pPage->AppendEntry("LODSkel",str);
}
if (b2->GetCheck())
{
lodstr = "LODShape";
}
for (int x=0;x<6;x++)
{
this->GetDlgItemText(IDC_EDIT_LOD0+x,str);
if (str.GetLength())
{
CString str1;
str1.Format("%s%d",lodstr,x);
m_pPage->AppendEntry(str1,str);
}
}
for (x=0;x<6;x++)
{
this->GetDlgItemText(IDC_EDIT_DAM0+x,str);
if (str.GetLength())
{
CString str1;
str1.Format("LODDam%d",x);
m_pPage->AppendEntry(str1,str);
}
}
bool bFade = m_checkFade.GetCheck() != 0;
for (x=0;x<6;x++)
{
CString strName;
strName.Format("LODDist%d",x);
if (bFade) {
CString strNear;
this->GetDlgItemText(IDC_EDIT_NEAR0+x,strNear);
CString strFar;
this->GetDlgItemText(IDC_EDIT_FAR0+x,strFar);
if (strNear.GetLength() && strFar.GetLength())
{
CString strin;
this->GetDlgItemText(IDC_EDIT_FADIN0+2*x,strin);
CString strout;
this->GetDlgItemText(IDC_EDIT_FADOUT0+2*x,strout);
CString strEntry;
strEntry.Format("%s %s %s %s",strNear,strin,strout,strFar);
m_pPage->AppendEntry(strName,strEntry);
}
}
else {
CString strFar;
this->GetDlgItemText(IDC_EDIT_DIST0+x,strFar);
if (strFar.GetLength())
{
m_pPage->AppendEntry(strName,strFar);
}
}
}
if (this->m_checkAnim.GetCheck())
{
this->m_Anim.GetWindowText(str);
m_pPage->AppendEntry("Anim",str);
}
if (this->m_checkOBB.GetCheck())
{
this->m_Obb.GetWindowText(str);
m_pPage->AppendEntry("OBB",str);
}
if (this->m_checkCage.GetCheck())
{
this->m_Cage.GetWindowText(str);
m_pPage->AppendEntry("Cage",str);
}
m_Hint.GetWindowText(str);
m_pPage->AppendEntry("Hint",str);
m_MegaNames.GetWindowText(str);
m_pPage->AppendEntry("MegaTextures",str);
// Save billboarding stuff
this->m_comboStartLOD.GetWindowText(str);
if (str != "None") {
m_pPage->AppendEntry("BillboardFrom", str);
bool bAlignX = this->m_checkAlignX.GetCheck() != 0;
bool bAlignY = this->m_checkAlignY.GetCheck() != 0;
if (bAlignX || bAlignY)
{
if (bAlignX && bAlignY)
m_pPage->AppendEntry("BillboardAlign", "X,Y");
else if (bAlignX)
m_pPage->AppendEntry("BillboardAlign", "X");
else if (bAlignY)
m_pPage->AppendEntry("BillboardAlign", "Y");
}
}
CDialog::OnOK();
}
void CEditBatch::OnButtonLod0()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD0,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD0,str);
}
}
void CEditBatch::OnButtonLod1()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD1,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD1,str);
}
}
void CEditBatch::OnButtonLod2()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD2,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD2,str);
}
}
void CEditBatch::OnButtonLod3()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD3,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD3,str);
}
}
void CEditBatch::OnButtonLod4()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD4,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD4,str);
}
}
void CEditBatch::OnButtonLod5()
{
CString str;
this->GetDlgItemText(IDC_EDIT_LOD5,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_LOD5,str);
}
}
void CEditBatch::OnButtonLoddam0()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM0,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM0,str);
}
}
void CEditBatch::OnButtonLoddam1()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM1,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM1,str);
}
}
void CEditBatch::OnButtonLoddam2()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM2,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM2,str);
}
}
void CEditBatch::OnButtonLoddam3()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM3,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM3,str);
}
}
void CEditBatch::OnButtonLoddam4()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM4,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM4,str);
}
}
void CEditBatch::OnButtonLoddam5()
{
CString str;
this->GetDlgItemText(IDC_EDIT_DAM5,str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
this->SetDlgItemText(IDC_EDIT_DAM5,str);
}
}
void CEditBatch::OnCheckAnim()
{
if (this->m_checkAnim.GetCheck())
{
this->m_Anim.EnableWindow(true);
}
else
{
this->m_Anim.EnableWindow(false);
}
}
void CEditBatch::OnCheckObb()
{
if (this->m_checkOBB.GetCheck())
{
this->m_Obb.EnableWindow(true);
}
else
{
this->m_Obb.EnableWindow(false);
}
}
void CEditBatch::OnBrowsePath()
{
CString str;
this->m_Path.GetWindowText(str);
CString newstr = BrowseDirectory(str,this);
if (newstr.GetLength())
{
m_Path.SetWindowText(newstr);
}
}
void CEditBatch::OnBrowseSkel()
{
CString str;
this->m_Skel.GetWindowText(str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
m_Skel.SetWindowText(str);
}
}
void CEditBatch::OnBrowseAnim()
{
CString str;
this->m_Anim.GetWindowText(str);
CString newstr = BrowseDirectory(str,this);
if (newstr.GetLength())
{
m_Anim.SetWindowText(newstr);
}
}
void CEditBatch::OnBrowseObb()
{
CString str;
this->m_Obb.GetWindowText(str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
m_Obb.SetWindowText(str);
}
}
void CEditBatch::OnBrowseCage()
{
CString str;
this->m_Cage.GetWindowText(str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
m_Cage.SetWindowText(str);
}
}
void CEditBatch::OnCheckCage()
{
if (this->m_checkCage.GetCheck())
{
this->m_Cage.EnableWindow(true);
}
else
{
this->m_Cage.EnableWindow(false);
}
}
void CEditBatch::OnRadioChar()
{
m_Skel.EnableWindow(true);
}
void CEditBatch::OnRadioShape()
{
m_Skel.EnableWindow(false);
}
void CEditBatch::OnCheckCrossfade()
{
bool bActive = m_checkFade.GetCheck() != 0;
int iLodDistNear = 0;
int iLodDistFar = 0;
const char *lodDist[6];
for (int x=0;x<6;x++)
{
CWnd *pWnd = GetDlgItem(IDC_EDIT_DIST0+x);
pWnd->EnableWindow(!bActive);
pWnd = GetDlgItem(IDC_EDIT_FADIN0+2*x);
pWnd->EnableWindow(bActive);
pWnd = GetDlgItem(IDC_EDIT_FADOUT0+2*x);
pWnd->EnableWindow(bActive);
pWnd = GetDlgItem(IDC_EDIT_NEAR0+x);
pWnd->EnableWindow(bActive);
pWnd = GetDlgItem(IDC_EDIT_FAR0+x);
pWnd->EnableWindow(bActive);
CString str;
str.Format("LodDist%d",x);
if (m_pPage->GetEntry(str,&lodDist[x]))
{
char dist[6][4][MAX_PATH];
::memset(dist, 0, 6*4*MAX_PATH);
int count = sscanf(lodDist[x],"%s %s %s %s",dist[x][0],dist[x][1],dist[x][2],dist[x][3]);
if (count == 1) {
this->SetDlgItemText(IDC_EDIT_DIST0+x,dist[x][0]);
if (x!=0)
iLodDistNear = this->GetDlgItemInt(IDC_EDIT_DIST0+x-1);
iLodDistFar = this->GetDlgItemInt(IDC_EDIT_DIST0+x);
if (iLodDistFar) {
this->SetDlgItemInt(IDC_EDIT_NEAR0+x, (iLodDistNear-5>0)?iLodDistNear-5:0);
this->SetDlgItemInt(IDC_EDIT_FADIN0+2*x, iLodDistNear+5);
this->SetDlgItemInt(IDC_EDIT_FADOUT0+2*x, (iLodDistFar-5>0)?iLodDistFar-5:0);
this->SetDlgItemInt(IDC_EDIT_FAR0+x, iLodDistFar+5);
}
else{
this->SetDlgItemText(IDC_EDIT_NEAR0+x, "");
this->SetDlgItemText(IDC_EDIT_FAR0 +x, "");
this->SetDlgItemText(IDC_EDIT_FADIN0 +2*x, "");
this->SetDlgItemText(IDC_EDIT_FADOUT0+2*x, "");
}
}
else {
this->SetDlgItemText(IDC_EDIT_NEAR0+x,dist[x][0]);
this->SetDlgItemText(IDC_EDIT_FADIN0+2*x,dist[x][1]);
this->SetDlgItemText(IDC_EDIT_FADOUT0+2*x,dist[x][2]);
this->SetDlgItemText(IDC_EDIT_FAR0+x,dist[x][3]);
}
}
}
const char *billBoardFrom = NULL;
if (m_pPage->GetEntry("BillBoardFrom", &billBoardFrom)) {
m_comboStartLOD.SelectString(0, billBoardFrom);
// Get Align axis for billboarding
const char *billBoardAlign = NULL;
if (m_pPage->GetEntry("BillboardAlign",&billBoardAlign)) {
CString strAlign = billBoardAlign;
strAlign.MakeLower();
if (strAlign.Find("x")>=0)
m_checkAlignX.SetCheck(1);
if (strAlign.Find("y")>=0)
m_checkAlignY.SetCheck(1);
}
}
else {
m_comboStartLOD.SelectString(0, "None");
}
m_comboStartLOD.EnableWindow(bActive);
OnSelectStartLOD();
}
void CEditBatch::OnBrowseHint()
{
CString str;
this->m_Hint.GetWindowText(str);
CFileDialog dlg(true,NULL,str);
if (IDOK == dlg.DoModal())
{
str = dlg.GetPathName();
m_Hint.SetWindowText(str);
}
}
void CEditBatch::OnSelectMeganames()
{
CString hintfile;
m_Hint.GetWindowText(hintfile);
CDlgSelectMegatextures dlg;
m_MegaNames.GetWindowText(dlg.m_strMegaTextures);
dlg.m_strHintFile = hintfile;
if (IDOK == dlg.DoModal())
{
m_MegaNames.SetWindowText(dlg.m_strMegaTextures);
}
}
void CEditBatch::OnSelectStartLOD()
{
CString startLOD;
m_comboStartLOD.GetLBText(m_comboStartLOD.GetCurSel(), startLOD);
m_checkAlignX.EnableWindow(startLOD!="None" && m_comboStartLOD.IsWindowEnabled());
m_checkAlignY.EnableWindow(startLOD!="None" && m_comboStartLOD.IsWindowEnabled());
}