Restructure repository to include all source folders
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>
This commit is contained in:
492
GameTools/WORLDCREATOR/PageObjectContainer.cpp
Normal file
492
GameTools/WORLDCREATOR/PageObjectContainer.cpp
Normal file
@@ -0,0 +1,492 @@
|
||||
// PageObjectContainer.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "worldcreator.h"
|
||||
#include "PageObjectContainer.h"
|
||||
#include "DlgObjectLoad.h"
|
||||
#include "MainFrm.h"
|
||||
#include "WorldCreatorView.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPageObjectContainer property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CPageObjectContainer, CPropertyPage)
|
||||
|
||||
CPageObjectContainer::CPageObjectContainer() : CPropertyPage(CPageObjectContainer::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CPageObjectContainer)
|
||||
m_bBspInput = FALSE;
|
||||
m_bAddObj = FALSE;
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
CPageObjectContainer::~CPageObjectContainer()
|
||||
{
|
||||
/*
|
||||
for(int i=0;i<m_ObjectListNode.num;i++)
|
||||
{
|
||||
delete m_ObjectListNode[i];
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void CPageObjectContainer::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CPageObjectContainer)
|
||||
DDX_Control(pDX, IDC_LIST_OBECTSCENE, m_ObjectList);
|
||||
DDX_Check(pDX, IDC_BSPINPUT, m_bBspInput);
|
||||
DDX_Check(pDX, IDC_CHECKADD, m_bAddObj);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CPageObjectContainer, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CPageObjectContainer)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_LIST_OBECTSCENE, OnRclickListObectscene)
|
||||
ON_COMMAND(MENU_OBJECT_LOAD, OnObjectLoad)
|
||||
ON_NOTIFY(LVN_BEGINDRAG, IDC_LIST_OBECTSCENE, OnBegindragListObectscene)
|
||||
ON_NOTIFY(NM_DBLCLK, IDC_LIST_OBECTSCENE, OnDblclkListObectscene)
|
||||
ON_COMMAND(MENU_OBJECTDELETE, OnObjectdelete)
|
||||
ON_BN_CLICKED(IDC_BSPINPUT, OnBspinput)
|
||||
ON_BN_CLICKED(IDC_CHECKADD, OnCheckadd)
|
||||
ON_NOTIFY(HDN_ITEMCLICK, IDC_LIST_OBECTSCENE, OnItemclickListObectscene)
|
||||
ON_NOTIFY(NM_SETFOCUS, IDC_LIST_OBECTSCENE, OnSetfocusListObectscene)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPageObjectContainer message handlers
|
||||
|
||||
void CPageObjectContainer::SelectObject()
|
||||
{
|
||||
m_SelectCur=m_ObjectList.GetNextItem(-1,LVNI_SELECTED);
|
||||
if(m_SelectCur<0)
|
||||
return;
|
||||
|
||||
m_strObjectName=m_ObjectListNode[m_SelectCur].m_strObjectName;
|
||||
m_strObjectFileName=m_ObjectListNode[m_SelectCur].m_strObjectFilename;
|
||||
m_isAlpha=m_ObjectListNode[m_SelectCur].m_IsAlpha;
|
||||
m_isLight=m_ObjectListNode[m_SelectCur].m_IsLight;
|
||||
}
|
||||
//menu
|
||||
void CPageObjectContainer::OnRclickListObectscene(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
CPoint point;
|
||||
GetCursorPos(&point);
|
||||
CMenu menu;
|
||||
menu.LoadMenu(IDR_MENU_OBJECT);
|
||||
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
BOOL CPageObjectContainer::OnInitDialog()
|
||||
{
|
||||
CPropertyPage::OnInitDialog();
|
||||
|
||||
DWORD dwStyle;
|
||||
dwStyle = m_ObjectList.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0 ,0);
|
||||
dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES ;
|
||||
m_ObjectList.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0,dwStyle );
|
||||
|
||||
m_ObjectList.InsertColumn(0,"이름",LVCFMT_LEFT,80);
|
||||
m_ObjectList.InsertColumn(1,"오브젝트",LVCFMT_LEFT,80);
|
||||
m_ObjectList.InsertColumn(2,"알파",LVCFMT_LEFT,50);
|
||||
m_ObjectList.InsertColumn(3,"라이트",LVCFMT_LEFT,50);
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnObjectLoad()
|
||||
{
|
||||
// TODO: Add your command handler code here
|
||||
CDlgObjectLoad dlgObjectLoad;
|
||||
if(dlgObjectLoad.DoModal()!=IDOK)
|
||||
return;
|
||||
CString strText;
|
||||
ObjectListNode AddNode;
|
||||
strcpy(AddNode.m_strObjectName,dlgObjectLoad.m_strObjectName.LockBuffer());
|
||||
strcpy(AddNode.m_strObjectFilename,dlgObjectLoad.m_strObjectFilename.LockBuffer());
|
||||
if(dlgObjectLoad.m_isAlpha)
|
||||
AddNode.m_IsAlpha=true;
|
||||
else
|
||||
AddNode.m_IsAlpha=false;
|
||||
|
||||
if(dlgObjectLoad.m_isLight)
|
||||
AddNode.m_IsLight=true;
|
||||
else
|
||||
AddNode.m_IsLight=false;
|
||||
|
||||
int nInsertItem=m_ObjectList.GetItemCount();
|
||||
|
||||
m_ObjectList.InsertItem(nInsertItem,dlgObjectLoad.m_strObjectName);
|
||||
m_ObjectList.SetItemText(nInsertItem,1,dlgObjectLoad.m_strObjectFilename);
|
||||
if(dlgObjectLoad.m_isAlpha)
|
||||
m_ObjectList.SetItemText(nInsertItem,2,"Yes");
|
||||
else
|
||||
m_ObjectList.SetItemText(nInsertItem,2,"No");
|
||||
|
||||
if(dlgObjectLoad.m_isLight)
|
||||
m_ObjectList.SetItemText(nInsertItem,3,"No");
|
||||
else
|
||||
m_ObjectList.SetItemText(nInsertItem,3,"No");
|
||||
m_ObjectListNode.Add(AddNode);
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnBegindragListObectscene(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
|
||||
// TODO: Add your control notification handler code here
|
||||
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
SelectObject();
|
||||
av->ChangeMouseInterface(3);
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CPageObjectContainer::AddObject(float fXp, float fYp, float fZp)
|
||||
{
|
||||
if(CSceneManager::m_PickHouseScene)
|
||||
{
|
||||
if(CSceneManager::m_PickHouseScene->m_HouseObject->m_pBspObject)
|
||||
{
|
||||
if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==0)
|
||||
{
|
||||
if(AfxMessageBox("BSP의 입구를 넣겠습니까?",MB_YESNO,0)!=IDYES)
|
||||
return;
|
||||
CSceneManager::m_pBspScene=CSceneManager::m_PickHouseScene;
|
||||
}
|
||||
else if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==1)
|
||||
{
|
||||
if(AfxMessageBox("BSP의 스타트를 넣겠습니까?",MB_YESNO,0)!=IDYES)
|
||||
return;
|
||||
}
|
||||
else if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==2)
|
||||
{
|
||||
if(AfxMessageBox("BSP의 출구를 넣겠습니까?",MB_YESNO,0)!=IDYES)
|
||||
return;
|
||||
CSceneManager::m_pBspScene=NULL;
|
||||
}
|
||||
else if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==3)
|
||||
{
|
||||
if(AfxMessageBox("필드의 출구를 넣겠습니까?",MB_YESNO,0)!=IDYES)
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(AfxMessageBox("집안에 오브텍트를 넣겠습니까?",MB_YESNO,0)!=IDYES)
|
||||
return;
|
||||
}
|
||||
if(m_SelectCur>=0)
|
||||
{
|
||||
matrix matInvTM,matTM;
|
||||
matTM.Translation(vector3(fXp,fYp,fZp));
|
||||
matInvTM.Inverse(CSceneManager::m_PickHouseScene->m_AccumulateTM);
|
||||
CObjectScene *AddObjectScene=new CObjectScene();
|
||||
AddObjectScene->m_TM=matTM*matInvTM;
|
||||
AddObjectScene->m_pObject=CSceneManager::m_ObjectContainer.GetObject(m_strObjectFileName.LockBuffer(),m_isAlpha,m_isLight);
|
||||
AddObjectScene->m_vecMaxBox=AddObjectScene->m_pObject->m_MaxBox;
|
||||
AddObjectScene->m_vecMinBox=AddObjectScene->m_pObject->m_MinBox;
|
||||
AddObjectScene->Init();
|
||||
strcpy(AddObjectScene->m_strObjectName,m_strObjectFileName.LockBuffer());
|
||||
AddObjectScene->m_isAlpha=true;
|
||||
AddObjectScene->m_isLight=true;
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
AddObjectScene->m_ObjectID=av->m_SceneManager->m_MapStorage.m_TotalInHouseLightSceneCount;
|
||||
//AddObjectScene->m_ObjectID=CMapStorage::m_TotalInHouseObjectSceneCount;
|
||||
CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.Add(AddObjectScene);
|
||||
|
||||
av->m_SceneManager->m_MapStorage.AddInHouseObject(CSceneManager::m_PickHouseScene->m_strOutName,
|
||||
CSceneManager::m_PickHouseScene->m_strMedName,
|
||||
CSceneManager::m_PickHouseScene->m_strInName,
|
||||
CSceneManager::m_PickHouseScene->m_strBSPName,
|
||||
m_strObjectFileName.LockBuffer(),AddObjectScene->m_TM,
|
||||
m_isAlpha,m_isLight);
|
||||
/*
|
||||
CMapStorage::AddInHouseObject(CSceneManager::m_PickHouseScene->m_strOutName,
|
||||
CSceneManager::m_PickHouseScene->m_strMedName,
|
||||
CSceneManager::m_PickHouseScene->m_strInName,
|
||||
m_strObjectFileName.LockBuffer(),AddObjectScene->m_TM,
|
||||
m_isAlpha,m_isLight);
|
||||
*/
|
||||
CSceneManager::m_PickHouseScene->m_HouseObject->m_pInHouseMap=
|
||||
av->m_SceneManager->m_MapStorage.CMapStorage::FindInHouseMap(
|
||||
CSceneManager::m_PickHouseScene->m_strOutName,
|
||||
CSceneManager::m_PickHouseScene->m_strMedName,
|
||||
CSceneManager::m_PickHouseScene->m_strInName,
|
||||
CSceneManager::m_PickHouseScene->m_strBSPName);
|
||||
CSceneManager::m_PickHouseScene->UpdateBspPosition();
|
||||
/*
|
||||
*/
|
||||
/*
|
||||
CMapStorage::FindInHouseMap(
|
||||
CSceneManager::m_PickHouseScene->m_strOutName,
|
||||
CSceneManager::m_PickHouseScene->m_strMedName,
|
||||
CSceneManager::m_PickHouseScene->m_strInName);
|
||||
*/
|
||||
CSceneManager::m_PickHouseScene->m_SelfLoadInObject=true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(m_SelectCur>=0)
|
||||
{
|
||||
matrix matTM;
|
||||
matTM.Translation(vector3(fXp,fYp,fZp));
|
||||
if(CSceneManager::m_RBspSceneManager.m_pCurrentBspScene == NULL) // RBSP 추가
|
||||
{
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->m_SceneManager->m_MapStorage.AddMeshMap(fXp,fYp,fZp,m_strObjectFileName.LockBuffer(),matTM,m_isAlpha,m_isLight);
|
||||
//CMapStorage::AddMeshMap(fXp,fYp,fZp,m_strObjectFileName.LockBuffer(),matTM,m_isAlpha,m_isLight);
|
||||
}
|
||||
else // RBSP추가
|
||||
{
|
||||
RBspScene *pScene = CSceneManager::m_RBspSceneManager.m_pCurrentBspScene;
|
||||
int iCurrentLeaf = pScene->FindWorldLeaf(D3DXVECTOR3(fXp,fYp,fZp));
|
||||
pScene->m_pLeafExs[iCurrentLeaf].InputR3SObject(fXp,fYp,fZp,m_strObjectFileName.LockBuffer(),matTM,m_isAlpha,m_isLight);
|
||||
pScene->GenerateR3SObject();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CPageObjectContainer::Save(FILE *fp)
|
||||
{
|
||||
fwrite(&m_ObjectListNode.num,sizeof(int),1,fp);
|
||||
for(int cObject=0;cObject<m_ObjectListNode.num;cObject++)
|
||||
{
|
||||
fwrite(m_ObjectListNode[cObject].m_strObjectName,sizeof(char)*MAX_NAMEBUFFER,1,fp);
|
||||
fwrite(m_ObjectListNode[cObject].m_strObjectFilename,sizeof(char)*MAX_NAMEBUFFER,1,fp);
|
||||
fwrite(&m_ObjectListNode[cObject].m_IsAlpha,sizeof(bool),1,fp);
|
||||
fwrite(&m_ObjectListNode[cObject].m_IsLight,sizeof(bool),1,fp);
|
||||
}
|
||||
}
|
||||
|
||||
void CPageObjectContainer::Load(FILE *fp,int iType)
|
||||
{
|
||||
if(!iType)
|
||||
DeleteListData();
|
||||
int cSavedObject=0;
|
||||
fread(&cSavedObject,sizeof(int),1,fp);
|
||||
for(int cObject=0;cObject<cSavedObject;cObject++)
|
||||
{
|
||||
ObjectListNode AddNode;
|
||||
fread(AddNode.m_strObjectName,sizeof(char)*MAX_NAMEBUFFER,1,fp);
|
||||
fread(AddNode.m_strObjectFilename,sizeof(char)*MAX_NAMEBUFFER,1,fp);
|
||||
fread(&AddNode.m_IsAlpha,sizeof(bool),1,fp);
|
||||
fread(&AddNode.m_IsLight,sizeof(bool),1,fp);
|
||||
m_ObjectListNode.Add(AddNode);
|
||||
}
|
||||
UpdateList();
|
||||
}
|
||||
|
||||
void CPageObjectContainer::DeleteListData()
|
||||
{
|
||||
m_ObjectListNode.num=0;
|
||||
m_ObjectList.DeleteAllItems();
|
||||
}
|
||||
|
||||
void CPageObjectContainer::UpdateList()
|
||||
{
|
||||
m_ObjectList.DeleteAllItems();
|
||||
|
||||
for(int i=0;i<m_ObjectListNode.num;i++)
|
||||
{
|
||||
m_ObjectList.InsertItem(i,m_ObjectListNode[i].m_strObjectName);
|
||||
m_ObjectList.SetItemText(i,1,m_ObjectListNode[i].m_strObjectFilename);
|
||||
if(m_ObjectListNode[i].m_IsAlpha)
|
||||
m_ObjectList.SetItemText(i,2,"Yes");
|
||||
else
|
||||
m_ObjectList.SetItemText(i,2,"No");
|
||||
if(m_ObjectListNode[i].m_IsLight)
|
||||
m_ObjectList.SetItemText(i,3,"Yes");
|
||||
else
|
||||
m_ObjectList.SetItemText(i,3,"No");
|
||||
}
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnDblclkListObectscene(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
|
||||
int SelectCur=m_ObjectList.GetNextItem(-1,LVNI_SELECTED);
|
||||
if(SelectCur==-1)
|
||||
return;
|
||||
|
||||
CDlgObjectLoad dlgObjectLoad;
|
||||
dlgObjectLoad.m_strObjectName=m_ObjectListNode[SelectCur].m_strObjectName;
|
||||
dlgObjectLoad.m_strObjectFilename=m_ObjectListNode[SelectCur].m_strObjectFilename;
|
||||
dlgObjectLoad.m_isAlpha=m_ObjectListNode[SelectCur].m_IsAlpha;
|
||||
dlgObjectLoad.m_isLight=m_ObjectListNode[SelectCur].m_IsLight;
|
||||
|
||||
if(dlgObjectLoad.DoModal()!=IDOK)
|
||||
return;
|
||||
|
||||
CString strText;
|
||||
strcpy(m_ObjectListNode[SelectCur].m_strObjectName,dlgObjectLoad.m_strObjectName.LockBuffer());
|
||||
strcpy(m_ObjectListNode[SelectCur].m_strObjectFilename,dlgObjectLoad.m_strObjectFilename.LockBuffer());
|
||||
|
||||
if(dlgObjectLoad.m_isAlpha)
|
||||
m_ObjectListNode[SelectCur].m_IsAlpha=true;
|
||||
else
|
||||
m_ObjectListNode[SelectCur].m_IsAlpha=false;
|
||||
|
||||
if(dlgObjectLoad.m_isLight)
|
||||
m_ObjectListNode[SelectCur].m_IsLight=true;
|
||||
else
|
||||
m_ObjectListNode[SelectCur].m_IsLight=false;
|
||||
|
||||
m_ObjectList.SetItemText(SelectCur,0,dlgObjectLoad.m_strObjectName);
|
||||
m_ObjectList.SetItemText(SelectCur,1,dlgObjectLoad.m_strObjectFilename);
|
||||
|
||||
if(dlgObjectLoad.m_isAlpha)
|
||||
m_ObjectList.SetItemText(SelectCur,2,"Yes");
|
||||
else
|
||||
m_ObjectList.SetItemText(SelectCur,2,"No");
|
||||
|
||||
if(dlgObjectLoad.m_isLight)
|
||||
m_ObjectList.SetItemText(SelectCur,3,"Yes");
|
||||
else
|
||||
m_ObjectList.SetItemText(SelectCur,3,"No");
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnObjectdelete()
|
||||
{
|
||||
// TODO: Add your command handler code here
|
||||
SelectObject();
|
||||
m_ObjectListNode.DelIndex(m_SelectCur);
|
||||
UpdateList();
|
||||
}
|
||||
|
||||
void CPageObjectContainer::AddObject(vector3 vecPos, char *strObjectName)
|
||||
{
|
||||
matrix matTM;
|
||||
matTM.Translation(vecPos);
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
av->m_SceneManager->m_MapStorage.AddMeshMap(vecPos.x,vecPos.y,vecPos.z,strObjectName,matTM,false,false);
|
||||
}
|
||||
//RBSP 추가
|
||||
void CPageObjectContainer::OnBspinput()
|
||||
{
|
||||
m_bBspInput = (m_bBspInput == TRUE) ? FALSE : TRUE;
|
||||
UpdateData(FALSE);
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
|
||||
if((CSceneManager::m_RBspSceneManager.m_pCurrentBspScene != NULL) && (m_bBspInput == TRUE)) // RBSP 추가
|
||||
{
|
||||
|
||||
SelectObject();
|
||||
av->ChangeMouseInterface(3);
|
||||
|
||||
}
|
||||
else {
|
||||
av->ChangeMouseInterface(-1);
|
||||
|
||||
}
|
||||
|
||||
// TODO: Add your control notification handler code here
|
||||
|
||||
}
|
||||
void CPageObjectContainer::MoveTarget(int i)
|
||||
{
|
||||
int iTotalItem = m_ObjectList.GetItemCount();
|
||||
|
||||
m_SelectCur=m_ObjectList.GetNextItem(-1,LVNI_SELECTED);
|
||||
|
||||
UINT flag = LVIS_SELECTED | LVIS_FOCUSED; //선택, 포커스
|
||||
|
||||
if(m_SelectCur<0)
|
||||
{
|
||||
m_ObjectList.SetItemState(0,flag,flag);
|
||||
m_SelectCur = 0;
|
||||
}
|
||||
if( i == 0 ) //Cursor Down
|
||||
{
|
||||
if(m_SelectCur + 1 < iTotalItem)
|
||||
{
|
||||
m_ObjectList.SetItemState(m_SelectCur + 1,flag,flag);
|
||||
m_SelectCur = m_SelectCur + 1;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ObjectList.SetItemState(0,flag,flag);
|
||||
m_SelectCur = 0;
|
||||
}
|
||||
}
|
||||
else //Cursor Up
|
||||
{
|
||||
if(m_SelectCur - 1 >= 0)
|
||||
{
|
||||
m_ObjectList.SetItemState(m_SelectCur - 1,flag,flag);
|
||||
m_SelectCur = m_SelectCur - 1;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ObjectList.SetItemState(iTotalItem - 1,flag,flag);
|
||||
m_SelectCur = iTotalItem - 1;
|
||||
|
||||
}
|
||||
}
|
||||
m_ObjectList.RedrawWindow();
|
||||
m_ObjectList.RedrawItems(0,iTotalItem -1);
|
||||
SelectObject();
|
||||
}
|
||||
/*
|
||||
void CPageObjectContainer::OnBUTTONClick()
|
||||
{
|
||||
|
||||
}
|
||||
*/
|
||||
void CPageObjectContainer::OnCheckadd()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
m_bAddObj = (m_bAddObj == TRUE) ? FALSE : TRUE;
|
||||
UpdateData(FALSE);
|
||||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||||
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
||||
|
||||
if((m_bAddObj == TRUE)) // RBSP 추가
|
||||
{
|
||||
|
||||
SelectObject();
|
||||
av->ChangeMouseInterface(3);
|
||||
|
||||
}
|
||||
else {
|
||||
av->ChangeMouseInterface(-1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnItemclickListObectscene(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
|
||||
// TODO: Add your control notification handler code here
|
||||
SelectObject();
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CPageObjectContainer::OnSetfocusListObectscene(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
SelectObject();
|
||||
*pResult = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user