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>
493 lines
15 KiB
C++
493 lines
15 KiB
C++
// 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,"<EFBFBD≯<EFBFBD>",LVCFMT_LEFT,80);
|
||
m_ObjectList.InsertColumn(1,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ",LVCFMT_LEFT,80);
|
||
m_ObjectList.InsertColumn(2,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",LVCFMT_LEFT,50);
|
||
m_ObjectList.InsertColumn(3,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ",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<EFBFBD><EFBFBD> <20>Ա<EFBFBD><D4B1><EFBFBD> <20>ְڽ<D6B0><DABD>ϱ<EFBFBD>?",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<EFBFBD><EFBFBD> <20><>ŸƮ<C5B8><C6AE> <20>ְڽ<D6B0><DABD>ϱ<EFBFBD>?",MB_YESNO,0)!=IDYES)
|
||
return;
|
||
}
|
||
else if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==2)
|
||
{
|
||
if(AfxMessageBox("BSP<EFBFBD><EFBFBD> <20>ⱸ<EFBFBD><E2B1B8> <20>ְڽ<D6B0><DABD>ϱ<EFBFBD>?",MB_YESNO,0)!=IDYES)
|
||
return;
|
||
CSceneManager::m_pBspScene=NULL;
|
||
}
|
||
else if(CSceneManager::m_PickHouseScene->m_HouseObject->m_ObjectList.num%4==3)
|
||
{
|
||
if(AfxMessageBox("<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD> <20>ⱸ<EFBFBD><E2B1B8> <20>ְڽ<D6B0><DABD>ϱ<EFBFBD>?",MB_YESNO,0)!=IDYES)
|
||
return;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(AfxMessageBox("<EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ְڽ<D6B0><DABD>ϱ<EFBFBD>?",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 <20>߰<EFBFBD>
|
||
{
|
||
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<53>߰<EFBFBD>
|
||
{
|
||
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 <20>߰<EFBFBD>
|
||
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 <20>߰<EFBFBD>
|
||
{
|
||
|
||
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; //<2F><><EFBFBD><EFBFBD>, <20><>Ŀ<EFBFBD><C4BF>
|
||
|
||
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 <20>߰<EFBFBD>
|
||
{
|
||
|
||
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;
|
||
}
|