Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
172 lines
4.6 KiB
C++
172 lines
4.6 KiB
C++
// DlgLightLoad.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "worldcreator.h"
|
|
#include "DlgLightLoad.h"
|
|
#include "SceneManager.h"
|
|
#include ".\dlglightload.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgLightLoad dialog
|
|
|
|
|
|
CDlgLightLoad::CDlgLightLoad(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDlgLightLoad::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDlgLightLoad)
|
|
m_bObjectName = FALSE;
|
|
m_strLightname = _T("");
|
|
m_fLightRange = 0.0f;
|
|
m_bExtLight = TRUE;
|
|
m_iLightSamples = 10;
|
|
m_iShadowSamples = 10;
|
|
m_ShadowFactors = 0.995f;
|
|
m_iAmbient = 16;
|
|
m_strEffect = _T("");
|
|
m_fExpose = 0.01f;
|
|
//}}AFX_DATA_INIT
|
|
m_cLightColor=0xffffffff;
|
|
m_bEditMode=false;
|
|
}
|
|
|
|
|
|
void CDlgLightLoad::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDlgLightLoad)
|
|
DDX_Control(pDX, IDC_CRL_LIGHTCOLOR, m_LightColor);
|
|
DDX_Check(pDX, IDC_CHECK_OBJECTFILENAME, m_bObjectName);
|
|
DDX_Text(pDX, IDC_EDIT_LIGHTNAME, m_strLightname);
|
|
DDX_Text(pDX, IDC_EDIT_LIGHTRANGE, m_fLightRange);
|
|
DDX_Check(pDX, IDC_CHECKEXT, m_bExtLight);
|
|
DDX_Text(pDX, IDC_LIGHTSAMPLES, m_iLightSamples);
|
|
DDX_Text(pDX, IDC_SHADOWSAMPLES, m_iShadowSamples);
|
|
DDX_Text(pDX, IDC_SHADOWFACTOR, m_ShadowFactors);
|
|
DDX_Text(pDX, IDC_AMBIENT, m_iAmbient);
|
|
DDX_Text(pDX, IDC_EDIT1, m_strEffect);
|
|
DDX_Text(pDX, IDC_EXPOSE, m_fExpose);
|
|
//}}AFX_DATA_MAP
|
|
DDX_ColourPicker(pDX, IDC_CRL_LIGHTCOLOR, m_cLightColor);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgLightLoad, CDialog)
|
|
//{{AFX_MSG_MAP(CDlgLightLoad)
|
|
ON_BN_CLICKED(IDC_CHECK_OBJECTFILENAME, OnCheckObjectfilename)
|
|
ON_BN_CLICKED(IDC_CHECKEXT, OnCheckext)
|
|
ON_BN_CLICKED(IDC_ESFBUTTON, OnEsfbutton)
|
|
//}}AFX_MSG_MAP
|
|
ON_EN_CHANGE(IDC_LIGHTSAMPLES, OnEnChangeLightsamples)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgLightLoad message handlers
|
|
|
|
void CDlgLightLoad::OnCheckObjectfilename()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
UpdateData();
|
|
CWnd* forrename=GetDlgItem(IDC_CHECK_OBJECTFILENAME);
|
|
if(m_bObjectName)
|
|
{
|
|
CString strFilter = R3SFILE;
|
|
CFileDialog filedia(TRUE,LIGHTOBJECTPATH,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
|
|
filedia.m_ofn.lpstrInitialDir=LIGHTOBJECTPATH;
|
|
filedia.DoModal();
|
|
CString filename=filedia.GetFileName();
|
|
if(filename!="")
|
|
{
|
|
forrename->SetWindowText(filename.LockBuffer());
|
|
m_strObjectFilename=filename;
|
|
}
|
|
else
|
|
{
|
|
m_bObjectName=FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
forrename->SetWindowText("없음");
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CDlgLightLoad::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
UpdateData(TRUE);
|
|
if(m_bExtLight == FALSE)
|
|
{
|
|
if(m_bEditMode)
|
|
{
|
|
if(m_fLightRange==0.0f)
|
|
AfxMessageBox("라이트 범위가 0.0m 입니다.");
|
|
else
|
|
{
|
|
vector3 vecAddLightPos=CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList[CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight].m_vecLightPos;
|
|
CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->DeleteLight();
|
|
color AddColor;
|
|
AddColor.a=0xff;
|
|
AddColor.r=GetRValue(m_cLightColor);
|
|
AddColor.g=GetGValue(m_cLightColor);
|
|
AddColor.b=GetBValue(m_cLightColor);
|
|
CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->AddLight(vecAddLightPos,m_fLightRange,AddColor);
|
|
CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight=CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList.num-1;
|
|
}
|
|
return;
|
|
}
|
|
if(m_strObjectFilename=="")
|
|
{
|
|
AfxMessageBox("오브젝트 파일이름을 선택하세요");
|
|
return;
|
|
}
|
|
if(m_fLightRange==0.0f)
|
|
{
|
|
AfxMessageBox("라이트 범위가 0.0m 입니다.");
|
|
return;
|
|
}
|
|
if(m_strLightname=="")
|
|
{
|
|
m_strLightname=m_strObjectFilename;
|
|
}
|
|
}
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CDlgLightLoad::OnCheckext()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
m_bExtLight = (m_bExtLight == TRUE) ? FALSE : TRUE;
|
|
UpdateData(FALSE);
|
|
|
|
}
|
|
|
|
void CDlgLightLoad::OnEsfbutton()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
char str[] = "Esf 파일(*.Esf) |*.Esf| 모든파일(*.*)|*.*||";
|
|
CString strFilter = str;
|
|
|
|
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
|
|
filedia.DoModal();
|
|
m_strEffect = filedia.GetFileName();
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CDlgLightLoad::OnEnChangeLightsamples()
|
|
{
|
|
// TODO: RICHEDIT 컨트롤인 경우 이 컨트롤은
|
|
// CDialog::마스크에 OR 연산하여 설정된 ENM_CHANGE 플래그를 지정하여
|
|
// CRichEditCtrl().SetEventMask()를 호출하도록 OnInitDialog() 함수를 재지정하지 않으면
|
|
// 이 알림을 보내지 않습니다.
|
|
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
}
|