void KGIniListCtrl::OnBnClick() { int nResult = false; int nRetCode = false; USER_ITEM_DATA itemData; KG_PROCESS_ERROR(m_lpCurItem); m_lpCurItem->GetStructData(&itemData, sizeof(itemData)); if (itemData.dwValueType == VALUE_FILE) { KG3DFileViewDialog fileDlg( true, _T(""), _T(""), NULL, _T(""), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, itemData.szFileFiter, this ); if (fileDlg.DoModal() == IDOK) { CString strPath = fileDlg.GetPathName(); char szName[MAX_PATH]; g_GetFilePathFromFullPath(szName, strPath.GetBuffer()); if (strPath.Find(g_szDefWorkDirectory) == -1) strncpy(szName, strPath.GetBuffer(), sizeof(szName)); strncpy( itemData.szPropertyValue, szName, sizeof(itemData.szPropertyValue) ); m_lpCurItem->SetStructData(&itemData); Update(m_lpCurItem, true); } } else if (itemData.dwValueType == VALUE_COLOR) { int nColor = atoi(itemData.szPropertyValue); CColorDialog colorDlg((COLORREF)nColor, 0, this); if (colorDlg.DoModal() == IDOK) { nColor = colorDlg.GetColor(); itoa(nColor, itemData.szPropertyValue, 10); m_lpCurItem->SetStructData(&itemData); Update(m_lpCurItem, true); } } else { } nResult = true; Exit0: return; }
void KPvsAttriPanel::OnBnClickedButtonIw() { if (!GetPvsScene()) return; IEKG3DRepresentPVS* pvs = GetPvsScene()->GetPvs(); if (!pvs) return; char szFullPath[MAX_PATH]; char szFilePath[MAX_PATH]; sprintf(szFilePath, TEXT("data\\source\\pvs\\")); g_GetFullPath(szFullPath, szFilePath); char szFilters[] = "Mesh Files|*.Mesh|Mdl Files|*.Mdl||"; CFileDialog fileDlg( TRUE, szFullPath, NULL, OFN_EXPLORER|OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this ); fileDlg.m_ofn.lStructSize = sizeof(fileDlg.m_ofn); fileDlg.m_ofn.lpstrTitle = "选择内墙模型"; fileDlg.m_ofn.lpstrInitialDir = szFullPath; if (fileDlg.DoModal() == IDOK) { m_strIW = fileDlg.GetPathName(); TCHAR szRetPaht[MAX_PATH]; if (g_GetFilePathFromFullPath(szRetPaht, m_strIW.GetBuffer())) m_strIW = szRetPaht; m_strIW.ReleaseBuffer(); UpdateData(FALSE); pvs->SetInsideBorderModel(m_strIW.GetBuffer()); m_strIW.ReleaseBuffer(); } }
int KGValueEdit4PairParamDlg::UpdateParam(CString* pStringParam) { int nResult = false; int nRetCode = false; USER_ITEM_DATA itemData; KGLOG_PROCESS_ERROR(pStringParam); KGLOG_PROCESS_ERROR(m_pTabFile); KGLOG_PROCESS_ERROR(m_pIniFile); KGLOG_PROCESS_ERROR(m_pListItem); m_pListItem->GetStructData(& itemData, sizeof(itemData)); { CFileDialog dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, itemData.szFileFiter, this /*_T("模型文件|*.mesh|材质文件|*.mtl|动画文件|*.ani|所有文件|*.*|"), this*/ ); if (dlg.DoModal() == IDOK) { char szRetPath[MAX_PATH]; *pStringParam = dlg.GetPathName(); nRetCode = g_GetFilePathFromFullPath(&szRetPath[0], pStringParam->GetBuffer()); if (!nRetCode) { ::MessageBox( this->m_hWnd, _T("只能选择在工作目录中的文件!!\t\t"), _T("Error!!"), MB_OK | MB_ICONERROR ); KGLOG_PROCESS_ERROR(false); } *pStringParam = szRetPath; } } UpdateData(FALSE); nResult = true; Exit0: return nResult; }
void KSceneSFXEditorMagicParpet::OnBnClickedBrowseTexture() { // TODO: Add your control notification handler code here GET_SFX_EDITOR(); char szFilters[] = "Texture Files|*.TGA;*.BMP;*.JPG;*.DDS;*.PNG|\ (*.TGA)|*.TGA|\ (*.BMP)|*.BMP|\ (*.JPG)|*.JPG|\ (*.DDS)|*.DDS|\ (*.PNG)|*.PNG|\ All Files (*.*)|*.*||"; CFileDialog fileDlg( TRUE, NULL, NULL, OFN_EXPLORER|OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this ); if (fileDlg.DoModal() == IDOK) { SetDlgItemText(IDC_TEXTURE_NAME, fileDlg.GetPathName()); IEKG3DSFX *pSFX = NULL; pScene->GetSFX(&pSFX); if (!pSFX) return ; IEKG3DSFXSelectMark* pFootPrint = pSFX->GetSelectMark(); if (!pFootPrint) return; TCHAR szRetPath[MAX_PATH]; g_GetFilePathFromFullPath(szRetPath, fileDlg.GetPathName().GetBuffer()); pFootPrint->LoadTexture(szRetPath); UpdateFootprintProperty(); return; } }
void KSceneSettingPageClouds::OnBnClickedMask() { CFileDialog dlg(TRUE); if (dlg.DoModal() == IDOK) { IEKG3DCloud* pCloud = GetValidCurCloudPointer(); if (NULL != pCloud) { TCHAR tszTemp[MAX_PATH]; CString strMask = dlg.GetPathName(); BOOL bRet = g_GetFilePathFromFullPath(tszTemp, (LPCTSTR)strMask);///这个函数记得检查返回 KG_PROCESS_ERROR(bRet); m_strMask = tszTemp; UpdateData(FALSE); KG_COM_PROCESS_ERROR(UpdateByStruct(KG3DCLOUD_MDO_MASKTEX)); } } return; Exit0: return; }
void KSceneSettingPageLighting::OnBnClickedEvnmap() { CFileDialog dlg(true); if (dlg.DoModal() == IDOK) { m_strEvnMap = dlg.GetPathName(); TCHAR szName[MAX_PATH]; if (g_GetFilePathFromFullPath(szName, m_strEvnMap.GetBuffer())) { IEKG3DScene* pScene = g_pGraphicsTool->GetScene(); if (pScene) { if (SUCCEEDED(pScene->SetEnvMap(szName))) UpdateData(false); } } } }
HRESULT KG3DScenePvsEditor::OpenPvs(LPCTSTR fileName) { TCHAR szRetPath[MAX_PATH]; if (g_GetFilePathFromFullPath(szRetPath, fileName)) fileName = szRetPath; _ASSERTE(NULL == m_pPvs && _T("否则下面的创建就会覆盖掉这个指针")); if (FAILED(g_cEngineManager.BuildKG3DRepresentObject(fileName, REPRESENTOBJECT_PVS, 0, 0, (IEKG3DRepresentObject**)&m_pPvs))) return E_FAIL; //KG3DSceneSelectionTool& selTool = this->GetSelectionTool(); for (list<KG3DPvsPortal*>::iterator i = m_pPvs->m_listPortal.begin(); i != m_pPvs->m_listPortal.end(); ++i) { /*KG3DSceneEntity Entity(SCENEENTITY_PVS_PORTAL, *i); selTool.SetSelectable(Entity, TRUE);*/ this->IEInsertEntitySelectable(SCENEENTITY_PVS_PORTAL, *i, TRUE);//<Selectable Refactor> } for (set<KG3DRepresentObject*>::iterator i = m_pPvs->m_setObjectInside.begin(); i != m_pPvs->m_setObjectInside.end(); ++i) { /*KG3DSceneEntity Entity(SCENEENTITY_OBJECT, *i); selTool.SetSelectable(Entity, TRUE);*/ this->IEInsertEntitySelectable(SCENEENTITY_OBJECT, *i, TRUE);//<Selectable Refactor> } m_pPvs->SetHandle(GetOneNewSpaceNodeHandle()); KG3DSceneSpaceNode::ConnectTwoNodes(m_lpSceneOutDoorSpaceMgr, m_pPvs); RegisterSpaceNode(m_pPvs); /* if (m_lpSceneOutDoorSpaceMgr) m_lpSceneOutDoorSpaceMgr->InputRepresentObject(m_pPvs, TRUE, FALSE);*/ return S_OK; }
void KGSFXGlobPage::Init() { HRESULT hRetCode = E_FAIL; SCENEENTITYTYPE EntityType = SCENEENTITY_NONE; IEKG3DSFX *pSFX = NULL; IEKG3DSceneEditorBase *piSceneEditorBase = NULL; IEKG3DSceneSelectBase *pSelector = NULL; DWORD dwType = 0; CString str; //IEKG3DSceneSFXEditor *pScene = NULL; GET_SFX_EDITOR(); hRetCode = pScene->GetSFX(&pSFX); KGLOG_COM_PROCESS_ERROR(hRetCode); hRetCode = pScene->GetSceneEditBase(&piSceneEditorBase); KGLOG_COM_PROCESS_ERROR(hRetCode); hRetCode = piSceneEditorBase->GetSceneSelector(&pSelector); _ASSERTE(pSelector); KGLOG_COM_PROCESS_ERROR(hRetCode); m_bSockWave = false; m_bSockWaveAdd = false; if (pSFX->GetIsShockWave()) { if (pSFX->GetShockMode() == SHOCK_WAVE_ONLY) m_bSockWave = true; else m_bSockWaveAdd = true; } if (pSFX->IsFixedSize()) m_bScalable = true; else m_bScalable = false; if (pSFX->GetIsCloseFloor()) m_bCloseFloor = true; else m_bCloseFloor = false; if (pSFX->IsLoacAxisY()) m_bLockY = true; else m_bLockY = false; m_tree.DeleteAllItems(); HTREEITEM hMdlItem = m_tree.InsertItem(TEXT("Ä£ÐÍ")); HTREEITEM hSfxItem = m_tree.InsertItem(TEXT("ÌØЧ")); m_tree.SetItemData(hMdlItem, (DWORD_PTR)0); m_tree.SetItemData(hMdlItem, (DWORD_PTR)0); INT nSelectSize = pSelector->GetSelectableEntitySize(); if (pScene) { for ( //std::KG3DSceneEntityList::iterator i = piSceneEditorBase->m_listSelectableEntity.begin(); //i != piSceneEditorBase->m_listSelectableEntity.end(); int i = 0; i < nSelectSize; i++ ) { IEKG3DSceneEntity* pEntity = NULL; hRetCode = pSelector->GetSelectableEntity(i, &pEntity); KGLOG_COM_PROCESS_ERROR(hRetCode); _ASSERTE(pEntity); hRetCode = pEntity->GetType(&EntityType); KGLOG_COM_PROCESS_ERROR(hRetCode); if (EntityType == SCENEENTITY_MODEL) { IEKG3DModel* pModel = NULL; LPCTSTR pszName = NULL; TCHAR szName[MAX_PATH]; *szName = '\0'; hRetCode = pEntity->GetPointer((VOID **)&pModel); KGLOG_COM_PROCESS_ERROR(hRetCode); hRetCode = pModel->GetName(&pszName); KGLOG_COM_PROCESS_ERROR(hRetCode); if (!g_GetFilePathFromFullPath(szName, pszName)) strcpy(szName, pszName); hRetCode = pModel->GetType(&dwType); KGLOG_COM_PROCESS_ERROR(hRetCode); if (dwType == MESHTYPE_SFX) { HTREEITEM hItem = m_tree.InsertItem(szName, hSfxItem); if (hItem) m_tree.SetItemData(hItem, (DWORD_PTR)pModel); } else { HTREEITEM hItem = m_tree.InsertItem(szName, hMdlItem); if (hItem) m_tree.SetItemData(hItem, (DWORD_PTR)pModel); } } } } m_tree.Expand(hMdlItem, TVE_EXPAND); m_tree.Expand(hSfxItem, TVE_EXPAND); str.Format("%u", pSFX->GetMaxParticleNum()); m_EditMaxParticleNum.SetWindowText(str); UpdateData(FALSE); Exit0: return; }
HRESULT KSceneSettingPageLighting::SynFromInterfaceToInner( DWORD_PTR dwOption /*= 0*/ ) { IEKG3DEnvEffLightSet* pLightSet = KSH::GetEngineInterfaceEx<IEKG3DEnvEffLightSet>(); KG_PROCESS_ERROR(pLightSet); { KG3DENVEFFLIGHTSET_DESCSTRUCT LightSetStruct; LightSetStruct.m_dwSceneAmbient = m_ColorBnSceneAmbient.GetBkColor(); LightSetStruct.m_dwModificationOption = KG3DENVEFFLIGHTSET_MDO_ALL; HRESULT hr = pLightSet->RequestModification(&LightSetStruct); KG_COM_PROCESS_ERROR(hr); IEKG3DLight* pLight = m_LightList.GetElemValueByCurSel(); KG_PROCESS_ERROR(pLight); KG3DENVEFFLIGHT_DESCSTRUCT DescStruct; DescStruct.m_D3DLight.Diffuse = Color2Value(m_ColorBnDiffuse.GetBkColor()); DescStruct.m_D3DLight.Ambient = Color2Value(m_ColorBnAmbient.GetBkColor()); DescStruct.m_D3DLight.Specular = Color2Value(m_ColorBnSpecular.GetBkColor()); DescStruct.m_ColorArgs[0] = m_ColorBnColor0.GetBkColor(); DescStruct.m_ColorArgs[1] = m_ColorBnColor1.GetBkColor(); DescStruct.m_ColorArgs[2] = m_ColorBnColor2.GetBkColor(); DescStruct.m_ColorArgs[3] = m_ColorBnColor3.GetBkColor(); UpdateData(TRUE); _ASSERTE(360.0f * (1-FLT_EPSILON) < 360.0f); if (MT_FLOAT_EQUAL_L(m_fHeightAngle, 360.0f))//MFC的宏会降低精度的 { m_fHeightAngle *= (1-FLT_EPSILON); } if (MT_FLOAT_EQUAL_L(m_fHeadingAngle, 180.0f)) { m_fHeadingAngle *= (1- FLT_EPSILON); } if(m_fHeightAngle < 0 || m_fHeightAngle > 360.0f - FLT_EPSILON) { MessageBox(_T("高度角超范围")); goto Exit0; } if (m_fHeadingAngle < 0 || m_fHeadingAngle > 180.0f - FLT_EPSILON) { MessageBox(_T("角度角超范围")); } D3DVECTOR TempVec; D3DXVec3Normalize((D3DXVECTOR3*)&TempVec, &m_vLightDir); //KG_PROCESS_ERROR(this->AngleToVec(m_fHeadingAngle, m_fHeightAngle, TempVec)); //DescStruct.m_D3DLight.Direction = D3DXVECTOR3(-TempVec.x, -TempVec.y, -TempVec.z); //加-号的原因是把位置变成出射角度 DescStruct.m_D3DLight.Direction = m_vLightDir; DescStruct.m_D3DLight.Type = D3DLIGHT_DIRECTIONAL; DescStruct.m_D3DLight.Position.x = 0.0f; DescStruct.m_D3DLight.Position.y = 400.0f; DescStruct.m_D3DLight.Position.z = 0.0f; DescStruct.m_dwModificationOption = KG3DENVEFFLIGHT_MDO_ALL; hr = pLight->RequestModification(&DescStruct); KG_COM_PROCESS_ERROR(hr); //同步灯光角度 { CWnd* pCheckSynDirection = this->GetDlgItem(IDC_CHECK2); if(pCheckSynDirection) { if (BST_CHECKED == (int)::SendMessage(pCheckSynDirection->GetSafeHwnd(), BM_GETCHECK, 0, 0)) { _ASSERTE(pLightSet); KG3DENVEFFLIGHT_DESCSTRUCT DirectionStruct = DescStruct; DirectionStruct.m_dwModificationOption = KG3DENVEFFLIGHT_MDO_D3DLIGHT_DIRECTION; INT nSize = 0; pLightSet->Size(&nSize); for (INT i = 0; i < nSize; ++i) { IEKG3DLight* pLightTemp = NULL; if (SUCCEEDED(pLightSet->Get(i, &pLightTemp))) { pLightTemp->RequestModification(&DirectionStruct); } } } } } TCHAR szName[MAX_PATH]; if (g_GetFilePathFromFullPath(szName, m_strEvnMap.GetBuffer())) { IEKG3DScene* pScene = KSH::GetEngineInterfaceEx<IEKG3DScene>(); if (pScene) { pScene->SetEnvMap(szName); } } } return S_OK; Exit0: return E_FAIL; }
void KGMemDateList::OnBnClick() { int nResult = false; int nRetCode = false; _ItemDate itemData; KG_PROCESS_ERROR(m_lpCurItem); m_lpCurItem->GetStructData(&itemData, sizeof(itemData)); if (itemData.dwType == MEM_TYPE_PATH) { CFileDialog fileDlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, this); if (fileDlg.DoModal() == IDOK) { CString strPath = fileDlg.GetPathName(); char szName[MAX_PATH]; g_GetFilePathFromFullPath(szName, strPath.GetBuffer()); if (strPath.Find(g_szDefWorkDirectory) == -1) strncpy(szName, strPath.GetBuffer(), sizeof(szName)); strncpy( itemData.szDate, szName, sizeof(itemData.szDate) ); m_lpCurItem->SetStructData(&itemData); Update(m_lpCurItem, true); } //KG3DFileViewDialog fileDlg( // true, _T(""), _T(""), NULL, _T(""), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // NULL/*itemData.szFileFiter*/, this //); //if (fileDlg.DoModal() == IDOK) //{ // CString strPath = fileDlg.GetPathName(); // char szName[MAX_PATH]; // g_GetFilePathFromFullPath(szName, strPath.GetBuffer()); // if (strPath.Find(g_szDefWorkDirectory) == -1) // strncpy(szName, strPath.GetBuffer(), sizeof(szName)); // strncpy( // itemData.szDate, szName, // sizeof(itemData.szDate) // ); // m_lpCurItem->SetStructData(&itemData); // Update(m_lpCurItem, true); //} } else if (itemData.dwType == MEM_TYPE_COLOR) { /*int nColor = atoi(itemData.szDate); CColorDialog colorDlg((COLORREF)nColor, 0, this); if (colorDlg.DoModal() == IDOK) { nColor = colorDlg.GetColor(); itoa(nColor, itemData.szDate, 10); m_lpCurItem->SetStructData(&itemData); Update(m_lpCurItem, true); }*/ int nColorARGB[4]; COLORREF colorRef; DWORD dwColor; sscanf(itemData.szDate, _T("%X"), &dwColor); nColorARGB[0] = (dwColor & 0xFF000000)>>24; nColorARGB[1] = (dwColor & 0x00FF0000)>>16; nColorARGB[2] = (dwColor & 0x0000FF00)>>8; nColorARGB[3] = (dwColor & 0x000000FF); colorRef = ((COLORREF)((((nColorARGB[3])&0xff)<<24)|(((nColorARGB[2])&0xff)<<16)|(((nColorARGB[1])&0xff)<<8)|((nColorARGB[0])&0xff))); CColorDialog colorDlg(colorRef, 0, this); if (colorDlg.DoModal() == IDOK) { colorRef = colorDlg.GetColor(); nColorARGB[0] = (colorRef & 0xFF000000)>>24; nColorARGB[1] = (colorRef & 0x00FF0000)>>16; nColorARGB[2] = (colorRef & 0x0000FF00)>>8; nColorARGB[3] = (colorRef & 0x000000FF); dwColor = D3DCOLOR_ARGB( nColorARGB[3], nColorARGB[2], nColorARGB[1], nColorARGB[0] ); sprintf(itemData.szDate, _T("%X"), dwColor); m_lpCurItem->SetStructData(&itemData); Update(m_lpCurItem, true); }
int KGSFXModelViewPage::FillTree(HTREEITEM hTreeItem, LPCTSTR szPath, int* pIndex) { int nResult = false; int nRetCode = false; TCHAR szFilePath[MAX_PATH]; sprintf(szFilePath, "%s%s", szPath, TEXT("\\*.*")); CFileFind fileFind; BOOL bWorking = fileFind.FindFile(szFilePath); int index = 0; TCHAR szKey[8]; TCHAR szVal[8]; while (bWorking) { itoa(index, szKey, 10); itoa(*pIndex, szVal, 10); bWorking = fileFind.FindNextFile(); if (fileFind.IsDots()) continue; CString strPath = fileFind.GetFilePath(); CString strName = fileFind.GetFileName(); if (fileFind.IsDirectory()) { if (strName == TEXT(".svn") || strName == TEXT("maps") || strName == TEXT("Texture")) continue; /*if (pMapFile) { if (hTreeItem) { TCHAR szSec[32]; int IndexParent = (int)m_tree.GetItemData(hTreeItem); itoa(IndexParent, szSec, 10); pMapFile->WriteString(szSec, szKey, szVal); pMapFile->WriteString(TEXT("Corr"), szVal, strName.GetBuffer()); pMapFile->WriteString(TEXT("Type"), szVal, TEXT("folder")); } else { pMapFile->WriteString(TEXT("Main"), szKey, szVal); pMapFile->WriteString(TEXT("Corr"), szVal, strName.GetBuffer()); pMapFile->WriteString(TEXT("Type"), szVal, TEXT("folder")); } }*/ HTREEITEM hTree = m_tree.InsertItem(strName.GetBuffer(), hTreeItem); //m_tree.SetItemData(hTree, (DWORD_PTR)(*pIndex)); //(*pIndex)++; FillTree(hTree, strPath.GetBuffer(), pIndex); } else { HTREEITEM hTree; TCHAR szName[MAX_PATH]; strncpy(szName, strName.GetBuffer(), sizeof(szName)); TCHAR* pszExt = strrchr(szName, '.'); if (!pszExt) continue; if (!stricmp(pszExt, TEXT(".mdl"))) hTree = m_tree.InsertItem(szName, 2, 2, hTreeItem); else if (!stricmp(pszExt, TEXT(".mesh"))) hTree = m_tree.InsertItem(szName, 1, 1, hTreeItem); else if (!stricmp(pszExt, TEXT(".sfx"))) hTree = m_tree.InsertItem(szName, 3, 3, hTreeItem); else if (!stricmp(pszExt, TEXT(".bind"))) hTree = m_tree.InsertItem(szName, 4, 4, hTreeItem); else continue; char fileName[MAX_PATH]; g_GetFilePathFromFullPath(fileName, strPath.GetBuffer()); strPath.ReleaseBuffer(); _strlwr(fileName); m_ModelInfo.push_back(ModelInfoPair(fileName, hTree)); //m_tree.SetItemData(hTree, (DWORD_PTR)(*pIndex)); /*if (pMapFile) { if (hTreeItem) { TCHAR szSec[32]; int IndexParent = (int)m_tree.GetItemData(hTreeItem); itoa(IndexParent, szSec, 10); pMapFile->WriteString(szSec, szKey, szVal); pMapFile->WriteString(TEXT("Corr"), szVal, szName); pMapFile->WriteString(TEXT("Type"), szVal, ++pszExt); } else { pMapFile->WriteString(TEXT("Main"), szKey, szVal); pMapFile->WriteString(TEXT("Corr"), szVal, szName); pMapFile->WriteString(TEXT("Type"), szVal, ++pszExt); } }*/ } //index++; //(*pIndex)++; } fileFind.Close(); nResult = true; //Exit0: return nResult; }
BOOL KScriptManager::Reload(const char* pszFileName) { BOOL bResult = false; BOOL bRetCode = false; IFile* piFile = NULL; char* pszBuffer = NULL; DWORD dwScriptID = 0; DWORD dwFileSize = 0; DWORD dwReadSize = 0; KLuaScriptData* pScriptData = NULL; char szPathName[MAX_PATH]; char szFileName[MAX_PATH]; assert(pszFileName); piFile = g_OpenFile(pszFileName); KG_PROCESS_ERROR(piFile); dwFileSize = piFile->Size(); pszBuffer = new char[dwFileSize]; KG_PROCESS_ERROR(pszBuffer); dwReadSize = piFile->Read(pszBuffer, dwFileSize); KG_PROCESS_ERROR(dwReadSize == dwFileSize); g_GetFullPath(szPathName, pszFileName); bRetCode = g_GetFilePathFromFullPath(szFileName, szPathName); KG_PROCESS_ERROR(bRetCode); dwScriptID = g_FileNameHash(szFileName); bRetCode = IsScriptExist(dwScriptID); KG_PROCESS_ERROR(bRetCode); bRetCode = m_piScript->LoadFromBuffer(dwScriptID, szPathName, pszBuffer, dwFileSize); KG_PROCESS_ERROR(bRetCode); pScriptData = m_piScript->GetScriptData(dwScriptID); if (pScriptData) { std::vector<DWORD>::iterator it = pScriptData->vecIncludeScriptID.begin(); std::vector<DWORD>::iterator itEnd = pScriptData->vecIncludeScriptID.end(); for (NULL; it != itEnd; ++it) { KLuaScriptData* pNewScriptData = NULL; pNewScriptData = m_piScript->GetScriptData(*it); if (pNewScriptData) Reload(pNewScriptData->szName); } } bResult = true; Exit0: if (!bResult) { KGLogPrintf(KGLOG_ERR, "[Lua] Failed to reload file \"%s\" !\n", pszFileName); } KG_DELETE_ARRAY(pszBuffer); KG_COM_RELEASE(piFile); return bResult; }