Files
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

711 lines
20 KiB
C++

// EditMLRStateDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MFC Gos.h"
#include "EditMLRStateDlg.h"
#include <GameOS\ToolOS.hpp>
/////////////////////////////////////////////////////////////////////////////
// CEditMLRStateDlg dialog
CEditMLRStateDlg::CEditMLRStateDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEditMLRStateDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CEditMLRStateDlg)
m_AlphaList = -1;
m_BackFaceList = -1;
m_DitherList = -1;
m_FilterList = -1;
m_LightList = -1;
m_TCorrectList = -1;
m_TextureList = -1;
m_ZBufList = -1;
m_WireFrameList = -1;
m_FogList = -1;
m_PriList = -1;
m_PAlpha = FALSE;
m_PBackFace = FALSE;
m_PDither = FALSE;
m_PFilter = FALSE;
m_PFog = FALSE;
m_PLight = FALSE;
m_PPriority = FALSE;
m_PTCorrect = FALSE;
m_PTexture = FALSE;
m_PWireFrame = FALSE;
m_PZBuf = FALSE;
m_PColoring = FALSE;
m_PSpecular = FALSE;
m_ColoringList = -1;
m_SpecularList = -1;
//}}AFX_DATA_INIT
States=NULL;
LastState=-1;
}
void CEditMLRStateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditMLRStateDlg)
DDX_Control(pDX, IDC_STATELIST, m_StateList);
DDX_Control(pDX, IDC_TEXTUREDSP, m_TextureText);
DDX_CBIndex(pDX, IDC_ALPHALIST, m_AlphaList);
DDX_CBIndex(pDX, IDC_BACKFACELIST, m_BackFaceList);
DDX_CBIndex(pDX, IDC_DITHERLIST, m_DitherList);
DDX_CBIndex(pDX, IDC_FILTERLIST, m_FilterList);
DDX_CBIndex(pDX, IDC_LIGHTLIST, m_LightList);
DDX_CBIndex(pDX, IDC_TCORRECTLIST, m_TCorrectList);
DDX_CBIndex(pDX, IDC_TEXTURELIST, m_TextureList);
DDX_CBIndex(pDX, IDC_ZBUFLIST, m_ZBufList);
DDX_CBIndex(pDX, IDC_WIREFRAMELIST, m_WireFrameList);
DDX_CBIndex(pDX, IDC_FOGLIST, m_FogList);
DDX_CBIndex(pDX, IDC_PRILEVEL, m_PriList);
DDX_Check(pDX, IDC_PER_ALPHA, m_PAlpha);
DDX_Check(pDX, IDC_PER_BACKFACE, m_PBackFace);
DDX_Check(pDX, IDC_PER_DITHER, m_PDither);
DDX_Check(pDX, IDC_PER_FILTER, m_PFilter);
DDX_Check(pDX, IDC_PER_FOG, m_PFog);
DDX_Check(pDX, IDC_PER_LIGHT, m_PLight);
DDX_Check(pDX, IDC_PER_PRI, m_PPriority);
DDX_Check(pDX, IDC_PER_TCORRECT, m_PTCorrect);
DDX_Check(pDX, IDC_PER_TEXTURE, m_PTexture);
DDX_Check(pDX, IDC_PER_WIREFRAME, m_PWireFrame);
DDX_Check(pDX, IDC_PER_ZBUF, m_PZBuf);
DDX_Check(pDX, IDC_PER_COLORING, m_PColoring);
DDX_Check(pDX, IDC_PER_SPECULAR, m_PSpecular);
DDX_CBIndex(pDX, IDC_COLORINGLIST, m_ColoringList);
DDX_CBIndex(pDX, IDC_SPECULARLIST, m_SpecularList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditMLRStateDlg, CDialog)
//{{AFX_MSG_MAP(CEditMLRStateDlg)
ON_BN_CLICKED(IDC_SAVEBUT, OnSavebut)
ON_LBN_SELCHANGE(IDC_STATELIST, OnSelchangeStatelist)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditMLRStateDlg message handlers
BOOL CEditMLRStateDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString tstr;
int i;
for(i=0;i<States->GetLength();i++)
{
tstr.Format("State#%i",i);
m_StateList.InsertString(-1,tstr);
}
LastState=0;
m_StateList.SetCurSel(0);
ReadState(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEditMLRStateDlg::ReadState(int stidx)
{
Verify(stidx<States->GetLength());
MidLevelRenderer::MLRState rstate;
rstate=(*States)[stidx];
MidLevelRenderer::MLRTexture *tex = NULL;
if(rstate.GetTextureHandle() && ((tex = (*MidLevelRenderer::MLRTexturePool::Instance)[&rstate]) != NULL))
{
m_TextureText.SetWindowText(tex->GetTextureName());
}
else
m_TextureText.SetWindowText("none");
m_AlphaList=0;
m_WireFrameList=0;
m_FilterList=0;
m_LightList=0;
m_FogList=0;
m_DitherList=0;
m_TCorrectList=0;
m_ZBufList=0;
m_BackFaceList=0;
m_PriList=0;
m_SpecularList=0;
m_ColoringList=0;
int RDMask,PDMask;
RDMask=rstate.GetRenderDeltaMask();
PDMask=rstate.GetProcessDeltaMask();
if(RDMask&MidLevelRenderer::MLRState::AlphaMask)
switch(rstate.GetAlphaMode())
{
case MidLevelRenderer::MLRState::OneZeroMode:
m_AlphaList=1;
break;
case MidLevelRenderer::MLRState::OneOneMode:
m_AlphaList=2;
break;
case MidLevelRenderer::MLRState::AlphaOneMode:
m_AlphaList=3;
break;
case MidLevelRenderer::MLRState::OneAlphaMode:
m_AlphaList=4;
break;
case MidLevelRenderer::MLRState::AlphaInvAlphaMode:
m_AlphaList=5;
break;
case MidLevelRenderer::MLRState::OneInvAlphaMode:
m_AlphaList=6;
break;
case MidLevelRenderer::MLRState::KeyedAlphaMode:
m_AlphaList=7;
break;
}
if(RDMask&MidLevelRenderer::MLRState::WireFrameMask)
switch(rstate.GetWireFrameMode())
{
case MidLevelRenderer::MLRState::WireFrameOffMode:
m_WireFrameList=1;
break;
case MidLevelRenderer::MLRState::WireFrameOnlyMode:
m_WireFrameList=2;
break;
case MidLevelRenderer::MLRState::WireFrameAddMode:
m_WireFrameList=3;
break;
}
if(RDMask&MidLevelRenderer::MLRState::FilterMask)
switch(rstate.GetFilterMode())
{
case MidLevelRenderer::MLRState::NoFilterMode:
m_FilterList=1;
break;
case MidLevelRenderer::MLRState::BiLinearFilterMode:
m_FilterList=2;
break;
case MidLevelRenderer::MLRState::TriLinearFilterMode:
m_FilterList=3;
break;
}
if(PDMask&MidLevelRenderer::MLRState::LightingMask)
if( rstate.GetLightingMode()==MidLevelRenderer::MLRState::LightingOffMode)
m_LightList=1;
else
if( rstate.GetLightingMode()==(MidLevelRenderer::MLRState::VertexLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode|
MidLevelRenderer::MLRState::LookupLightingMode))
m_LightList=2;
else
if( rstate.GetLightingMode()==(MidLevelRenderer::MLRState::VertexLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode))
m_LightList=3;
else
if( rstate.GetLightingMode()==(MidLevelRenderer::MLRState::LightMapLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode))
m_LightList=4;
else
if( rstate.GetLightingMode()==MidLevelRenderer::MLRState::LightMapLightingMode)
m_LightList=5;
else
PAUSE(("Light Switch is in Invalid State"));
if(RDMask&MidLevelRenderer::MLRState::FogMask)
m_FogList=rstate.GetFogMode()+1;
if(RDMask&MidLevelRenderer::MLRState::DitherMask)
switch(rstate.GetDitherMode())
{
case MidLevelRenderer::MLRState::DitherOnMode:
m_DitherList=1;
break;
case MidLevelRenderer::MLRState::DitherOffMode:
m_DitherList=2;
break;
}
if(RDMask&MidLevelRenderer::MLRState::TextureCorrectionMask)
switch(rstate.GetTextureCorrectionMode())
{
case MidLevelRenderer::MLRState::TextureCorrectionOnMode:
m_TCorrectList=1;
break;
case MidLevelRenderer::MLRState::TextureCorrectionOffMode:
m_TCorrectList=2;
break;
}
if(RDMask&MidLevelRenderer::MLRState::SpecularMask)
switch(rstate.GetSpecularMode())
{
case MidLevelRenderer::MLRState::SpecularOnMode:
m_SpecularList=1;
break;
case MidLevelRenderer::MLRState::SpecularOffMode:
m_SpecularList=2;
break;
}
if(RDMask&MidLevelRenderer::MLRState::FlatColoringMask)
switch(rstate.GetFlatColoringMode())
{
case MidLevelRenderer::MLRState::FlatColoringOnMode:
m_ColoringList=1;
break;
case MidLevelRenderer::MLRState::FlatColoringOffMode:
m_ColoringList=2;
break;
}
if( RDMask&(MidLevelRenderer::MLRState::ZBufferCompareMask|
MidLevelRenderer::MLRState::ZBufferWriteMask) )
{
m_ZBufList=0;
if(rstate.GetZBufferWriteMode()==MidLevelRenderer::MLRState::ZBufferWriteOnMode)
{
if(rstate.GetZBufferCompareMode()==MidLevelRenderer::MLRState::ZBufferCompareOnMode)
{
m_ZBufList=1;
}
else
{
m_ZBufList=2;
}
}
else
{
if(rstate.GetZBufferCompareMode()==MidLevelRenderer::MLRState::ZBufferCompareOnMode)
{
m_ZBufList=3;
}
else
{
m_ZBufList=4;
}
}
}
if(PDMask&MidLevelRenderer::MLRState::BackFaceMask)
m_BackFaceList=(rstate.GetBackFaceMode()==MidLevelRenderer::MLRState::BackFaceOnMode)?1:2;
if(PDMask&MidLevelRenderer::MLRState::PriorityMask)
m_PriList=rstate.GetPriority()+1;
int PerMask;
PerMask=rstate.GetRenderPermissionMask();
m_PAlpha=(PerMask&MidLevelRenderer::MLRState::AlphaMask)?TRUE:FALSE;
m_PTexture=(PerMask&MidLevelRenderer::MLRState::TextureMask)?TRUE:FALSE;
m_PFilter=(PerMask&MidLevelRenderer::MLRState::FilterMask)?TRUE:FALSE;
m_PWireFrame=(PerMask&MidLevelRenderer::MLRState::WireFrameMask)?TRUE:FALSE;
m_PFog=(PerMask&MidLevelRenderer::MLRState::FogMask)?TRUE:FALSE;
m_PDither=(PerMask&MidLevelRenderer::MLRState::DitherMask)?TRUE:FALSE;
m_PTCorrect=(PerMask&MidLevelRenderer::MLRState::TextureCorrectionMask)?TRUE:FALSE;
m_PSpecular=(PerMask&MidLevelRenderer::MLRState::SpecularMask)?TRUE:FALSE;
m_PColoring=(PerMask&MidLevelRenderer::MLRState::FlatColoringMask)?TRUE:FALSE;
m_PLight=(rstate.GetProcessPermissionMask()&MidLevelRenderer::MLRState::LightingMask)?TRUE:FALSE;
m_PBackFace=(rstate.GetProcessPermissionMask()&MidLevelRenderer::MLRState::BackFaceMask)?TRUE:FALSE;
m_PPriority=(rstate.GetProcessPermissionMask()&MidLevelRenderer::MLRState::PriorityMask)?TRUE:FALSE;
if((PerMask&MidLevelRenderer::MLRState::ZBufferCompareMask) &&
(PerMask&MidLevelRenderer::MLRState::ZBufferWriteMask))
m_PZBuf=TRUE;
else
m_PZBuf=FALSE;
UpdateData(FALSE);
}
void CEditMLRStateDlg::OnSavebut()
{
UpdateState(m_StateList.GetCurSel());
CDialog::OnOK();
}
void CEditMLRStateDlg::OnOK()
{
// CDialog::OnOK();
}
void CEditMLRStateDlg::UpdateState(int idx)
{
Verify(idx<States->GetLength());
MidLevelRenderer::MLRState rstate;
rstate=(*States)[idx];
UpdateData(TRUE);
//Set Delta Masks
int RDMask,PDMask;
RDMask=rstate.GetRenderDeltaMask();
// RDMask|=MidLevelRenderer::MLRState::TextureMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferWriteMask;
RDMask|=MidLevelRenderer::MLRState::FilterMask;
RDMask|=MidLevelRenderer::MLRState::WireFrameMask;
RDMask|=MidLevelRenderer::MLRState::FogMask;
RDMask|=MidLevelRenderer::MLRState::DitherMask;
RDMask|=MidLevelRenderer::MLRState::TextureCorrectionMask;
RDMask|=MidLevelRenderer::MLRState::SpecularMask;
RDMask|=MidLevelRenderer::MLRState::FlatColoringMask;
PDMask=rstate.GetProcessDeltaMask();
PDMask|=MidLevelRenderer::MLRState::LightingMask;
PDMask|=MidLevelRenderer::MLRState::BackFaceMask;
PDMask|=MidLevelRenderer::MLRState::PriorityMask;
// RDMask=RDMask&~MidLevelRenderer::MLRState::TextureMask;
CString texname;
m_TextureText.GetWindowText(texname);
MidLevelRenderer::MLRTexture *tex = NULL;
if(rstate.GetTextureHandle() && ((tex = (*MidLevelRenderer::MLRTexturePool::Instance)[&rstate]) != NULL))
{
tex = MidLevelRenderer::MLRTexturePool::Instance->Add(texname);
rstate.SetTextureHandle(tex->GetTextureHandle());
}
switch(m_AlphaList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::AlphaMask;
break;
case 1:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::OneZeroMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 2:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::OneOneMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 3:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::AlphaOneMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 4:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::OneAlphaMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 5:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::AlphaInvAlphaMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 6:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::OneInvAlphaMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
case 7:
rstate.SetAlphaMode(MidLevelRenderer::MLRState::KeyedAlphaMode);
RDMask|=MidLevelRenderer::MLRState::AlphaMask;
break;
}
switch(m_WireFrameList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::WireFrameMask;
break;
case 1:
rstate.SetWireFrameMode(MidLevelRenderer::MLRState::WireFrameOffMode);
RDMask|=MidLevelRenderer::MLRState::WireFrameMask;
break;
case 2:
rstate.SetWireFrameMode(MidLevelRenderer::MLRState::WireFrameOnlyMode);
RDMask|=MidLevelRenderer::MLRState::WireFrameMask;
break;
case 3:
rstate.SetWireFrameMode(MidLevelRenderer::MLRState::WireFrameAddMode);
RDMask|=MidLevelRenderer::MLRState::WireFrameMask;
break;
}
switch(m_FilterList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::FilterMask;
break;
case 1:
rstate.SetFilterMode(MidLevelRenderer::MLRState::NoFilterMode);
RDMask|=MidLevelRenderer::MLRState::FilterMask;
break;
case 2:
rstate.SetFilterMode(MidLevelRenderer::MLRState::BiLinearFilterMode);
RDMask|=MidLevelRenderer::MLRState::FilterMask;
break;
case 3:
rstate.SetFilterMode(MidLevelRenderer::MLRState::TriLinearFilterMode);
RDMask|=MidLevelRenderer::MLRState::FilterMask;
break;
}
switch(m_LightList)
{
case 0:
PDMask=PDMask^MidLevelRenderer::MLRState::LightingMask;
break;
case 1:
rstate.SetLightingMode(MidLevelRenderer::MLRState::LightingOffMode);
PDMask|=MidLevelRenderer::MLRState::LightingMask;
break;
case 2:
rstate.SetLightingMode( MidLevelRenderer::MLRState::VertexLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode|
MidLevelRenderer::MLRState::LookupLightingMode);
PDMask|=MidLevelRenderer::MLRState::LightingMask;
break;
case 3:
rstate.SetLightingMode(MidLevelRenderer::MLRState::VertexLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode
);
PDMask|=MidLevelRenderer::MLRState::LightingMask;
break;
case 4:
rstate.SetLightingMode(MidLevelRenderer::MLRState::LightMapLightingMode|
MidLevelRenderer::MLRState::FaceLightingMode);
PDMask|=MidLevelRenderer::MLRState::LightingMask;
break;
case 5:
rstate.SetLightingMode(MidLevelRenderer::MLRState::LightMapLightingMode);
PDMask|=MidLevelRenderer::MLRState::LightingMask;
break;
}
if(m_FogList==0)
{
RDMask=RDMask&~MidLevelRenderer::MLRState::FogMask;
}
else
{
rstate.SetFogMode(m_FogList-1);
RDMask|=MidLevelRenderer::MLRState::FogMask;
}
switch(m_DitherList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::DitherMask;
break;
case 1:
rstate.SetDitherOn();
RDMask|=MidLevelRenderer::MLRState::DitherMask;
break;
case 2:
rstate.SetDitherOff();
RDMask|=MidLevelRenderer::MLRState::DitherMask;
break;
}
switch(m_TCorrectList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::TextureCorrectionMask;
break;
case 1:
rstate.SetTextureCorrectionOn();
RDMask|=MidLevelRenderer::MLRState::TextureCorrectionMask;
break;
case 2:
rstate.SetTextureCorrectionOff();
RDMask|=MidLevelRenderer::MLRState::TextureCorrectionMask;
break;
}
switch(m_SpecularList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::SpecularMask;
break;
case 1:
rstate.SetSpecularOn();
RDMask|=MidLevelRenderer::MLRState::SpecularMask;
break;
case 2:
rstate.SetSpecularOff();
RDMask|=MidLevelRenderer::MLRState::SpecularMask;
break;
}
switch(m_ColoringList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::FlatColoringMask;
break;
case 1:
rstate.SetFlatColoringOn();
RDMask|=MidLevelRenderer::MLRState::FlatColoringMask;
break;
case 2:
rstate.SetFlatColoringOff();
RDMask|=MidLevelRenderer::MLRState::FlatColoringMask;
break;
}
switch(m_ZBufList)
{
case 0:
RDMask=RDMask&~MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::ZBufferWriteMask;
break;
case 1:
rstate.SetZBufferCompareOn();
rstate.SetZBufferWriteOn();
RDMask|=MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferWriteMask;
break;
case 2:
rstate.SetZBufferCompareOn();
rstate.SetZBufferWriteOff();
RDMask|=MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferWriteMask;
break;
case 3:
rstate.SetZBufferCompareOff();
rstate.SetZBufferWriteOn();
RDMask|=MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferWriteMask;
break;
case 4:
rstate.SetZBufferCompareOff();
rstate.SetZBufferWriteOff();
RDMask|=MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask|=MidLevelRenderer::MLRState::ZBufferWriteMask;
break;
}
switch(m_BackFaceList)
{
case 0:
PDMask=PDMask^MidLevelRenderer::MLRState::BackFaceMask;
break;
case 1:
rstate.SetBackFaceOn();
PDMask|=MidLevelRenderer::MLRState::BackFaceMask;
break;
case 2:
rstate.SetBackFaceOff();
PDMask|=MidLevelRenderer::MLRState::BackFaceMask;
break;
}
if(m_PriList!=0)
{
rstate.SetPriority(m_PriList-1);
PDMask|=MidLevelRenderer::MLRState::PriorityMask;
}
else
{
PDMask=PDMask^MidLevelRenderer::MLRState::PriorityMask;
}
rstate.SetRenderDeltaMask(RDMask);
rstate.SetProcessDeltaMask(PDMask);
//Set Permission Masks
RDMask=rstate.GetRenderPermissionMask();
RDMask=RDMask&~MidLevelRenderer::MLRState::TextureMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::ZBufferCompareMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::ZBufferWriteMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::AlphaMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::FilterMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::WireFrameMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::FogMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::DitherMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::TextureCorrectionMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::SpecularMask;
RDMask=RDMask&~MidLevelRenderer::MLRState::FlatColoringMask;
RDMask|=m_PTexture?MidLevelRenderer::MLRState::TextureMask:0;
RDMask|=m_PZBuf?MidLevelRenderer::MLRState::ZBufferCompareMask:0;
RDMask|=m_PZBuf?MidLevelRenderer::MLRState::ZBufferWriteMask:0;
RDMask|=m_PAlpha?MidLevelRenderer::MLRState::AlphaMask:0;
RDMask|=m_PFilter?MidLevelRenderer::MLRState::FilterMask:0;
RDMask|=m_PWireFrame?MidLevelRenderer::MLRState::WireFrameMask:0;
RDMask|=m_PFog?MidLevelRenderer::MLRState::FogMask:0;
RDMask|=m_PDither?MidLevelRenderer::MLRState::DitherMask:0;
RDMask|=m_PTCorrect?MidLevelRenderer::MLRState::TextureCorrectionMask:0;
RDMask|=m_PSpecular?MidLevelRenderer::MLRState::SpecularMask:0;
RDMask|=m_PColoring?MidLevelRenderer::MLRState::FlatColoringMask:0;
rstate.SetRenderPermissionMask(RDMask);
PDMask=rstate.GetProcessPermissionMask();
PDMask=PDMask&~MidLevelRenderer::MLRState::LightingMask;
PDMask=PDMask&~MidLevelRenderer::MLRState::BackFaceMask;
PDMask=PDMask&~MidLevelRenderer::MLRState::PriorityMask;
PDMask|=m_PLight?MidLevelRenderer::MLRState::LightingMask:0;
PDMask|=m_PBackFace?MidLevelRenderer::MLRState::BackFaceMask:0;
PDMask|=m_PPriority?MidLevelRenderer::MLRState::PriorityMask:0;
rstate.SetProcessPermissionMask(PDMask);
(*States)[idx]=rstate;
}
void CEditMLRStateDlg::SetStates(Stuff::DynamicArrayOf<MidLevelRenderer::MLRState> *stt)
{
States=stt;
}
void CEditMLRStateDlg::OnSelchangeStatelist()
{
UpdateState(LastState);
ReadState(m_StateList.GetCurSel());
}
extern Stuff::MString *erf_texture_path;
void CEditMLRStateDlg::OnBrowse()
{
CString texname;
m_TextureText.GetWindowText(texname);
char *path = *erf_texture_path;
texname=CString(path)+texname;
CString pngname = texname+".png";
if (::gos_DoesFileExist(pngname))
{
texname = pngname;
}
else
texname+=".tga";
CFileDialog dlg(true,"*.png",texname,OFN_HIDEREADONLY,"Texture Files (*.png;*.tga)|*.png;*.tga||");
if (IDOK==dlg.DoModal())
{
texname = dlg.GetFileTitle();
m_TextureText.SetWindowText(texname);
}
}