Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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();
   
    }
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
	}
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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);
            }
        }
    }
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
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;
}
Ejemplo n.º 9
0
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;
}
Ejemplo n.º 10
0
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);
		}
Ejemplo n.º 11
0
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;
}
Ejemplo n.º 12
0
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;
}