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>
167 lines
4.7 KiB
C++
167 lines
4.7 KiB
C++
// PageDuengunEffect.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "worldcreator.h"
|
|
#include "PageDuengunEffect.h"
|
|
#include "MainFrm.h"
|
|
#include "WorldCreatorView.h"
|
|
#include "DlgDuenEffect.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPageDuengunEffect property page
|
|
|
|
IMPLEMENT_DYNCREATE(CPageDuengunEffect, CPropertyPage)
|
|
|
|
CPageDuengunEffect::CPageDuengunEffect() : CPropertyPage(CPageDuengunEffect::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CPageDuengunEffect)
|
|
m_bToggle = TRUE;
|
|
m_bPick = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
CPageDuengunEffect::~CPageDuengunEffect()
|
|
{
|
|
}
|
|
|
|
void CPageDuengunEffect::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPageDuengunEffect)
|
|
DDX_Control(pDX, IDC_LIST1, m_ctrlEffectList);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bToggle);
|
|
DDX_Check(pDX, IDC_CHECK2, m_bPick);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPageDuengunEffect, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CPageDuengunEffect)
|
|
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
|
|
ON_BN_CLICKED(IDC_CHECK1, OnToggle)
|
|
ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPageDuengunEffect message handlers
|
|
/*
|
|
void CPageDuengunEffect::OnEffectsave()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
}
|
|
*/
|
|
BOOL CPageDuengunEffect::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
DWORD dwStyle;
|
|
dwStyle = m_ctrlEffectList.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0 ,0);
|
|
dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES ;
|
|
m_ctrlEffectList.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0,dwStyle );
|
|
|
|
m_ctrlEffectList.InsertColumn(0,"±Í¼Ó Leaf",LVCFMT_LEFT,70);
|
|
m_ctrlEffectList.InsertColumn(1,"Effect Name", LVCFMT_LEFT,70);
|
|
m_ctrlEffectList.InsertColumn(2,"Delay Time",LVCFMT_LEFT,70);
|
|
// TODO: Add extra initialization here
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
// MouseInterface : 97 ->Duengun Effect
|
|
/*
|
|
void CPageDuengunEffect::OnCheck1()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
UpdateData(TRUE);
|
|
if(m_BInput) {
|
|
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
|
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
|
av->ChangeMouseInterface(97);
|
|
}
|
|
else
|
|
{
|
|
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
|
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
|
av->ChangeMouseInterface(-1);
|
|
}
|
|
|
|
}
|
|
*/
|
|
void CPageDuengunEffect::OnButton1()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if((CSceneManager::m_RBspSceneManager.m_pCurrentBspScene != NULL) &&
|
|
(CSceneManager::m_RBspSceneManager.m_pCurrentBspScene->m_iRBspLeafIndex != -1))
|
|
{
|
|
|
|
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
|
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
|
D3DXMATRIX matView;
|
|
av->m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&matView);
|
|
D3DXMatrixInverse(&matView,NULL,&matView);
|
|
vector3 vecPos = vector3(matView._41,matView._42,matView._43);
|
|
|
|
EditDialog.m_strPosition.Format("X : %f Y : %f Z : %f",vecPos.x,vecPos.y,vecPos.z);
|
|
EditDialog.m_iLeafIndex = CSceneManager::m_RBspSceneManager.m_pCurrentBspScene->m_iRBspLeafIndex;
|
|
EditDialog.DoModal();
|
|
RBspScene *pScene = CSceneManager::m_RBspSceneManager.m_pCurrentBspScene;
|
|
int iLeaf = CSceneManager::m_RBspSceneManager.m_pCurrentBspScene->m_iRBspLeafIndex;
|
|
D3DXVECTOR3 vecEffect = D3DXVECTOR3(vecPos.x,vecPos.y,vecPos.z);
|
|
pScene->m_pLeafExs[iLeaf].InputEventEffect((EditDialog.m_strEffectName.LockBuffer()),vecEffect,EditDialog.m_fDelay);
|
|
// Insert Item
|
|
LV_ITEM item;
|
|
item.iItem = m_ctrlEffectList.GetItemCount();
|
|
item.mask = LVIF_TEXT;
|
|
item.iSubItem = 0;
|
|
|
|
CString Tmp;
|
|
Tmp.Format("%d",iLeaf);
|
|
|
|
item.pszText = Tmp.LockBuffer();
|
|
|
|
m_ctrlEffectList.InsertItem(&item);
|
|
|
|
m_ctrlEffectList.SetItemText(item.iItem,1,EditDialog.m_strEffectName);
|
|
Tmp.Format("%f",EditDialog.m_fDelay);
|
|
m_ctrlEffectList.SetItemText(item.iItem,2,Tmp);
|
|
}
|
|
else
|
|
{
|
|
MessageBox("Bsp ³»ºÎ°¡ ¾Æ´Ï°Å³ª Leaf ³ëµå°¡ À߸øµÇ¾ú½À´Ï´Ù.");
|
|
}
|
|
}
|
|
|
|
void CPageDuengunEffect::OnToggle()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
m_bToggle = (m_bToggle == TRUE) ? FALSE : TRUE;
|
|
CSceneManager::m_RBspSceneManager.m_pCurrentBspScene->m_bVisEffectBox = (m_bToggle == TRUE) ? true : false;
|
|
UpdateData(FALSE);
|
|
|
|
|
|
}
|
|
|
|
void CPageDuengunEffect::OnCheck2()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
m_bPick = (m_bPick == TRUE) ? FALSE : TRUE;
|
|
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
|
|
|
if(m_bPick == TRUE)
|
|
{
|
|
mf->m_PickMode = 97;
|
|
}
|
|
else
|
|
{
|
|
mf->m_PickMode = -1;
|
|
}
|
|
}
|