// WorldCreatorView.cpp : implementation of the CWorldCreatorView class // #include "stdafx.h" #include "WorldCreator.h" #include "WorldCreatorDoc.h" #include "WorldCreatorView.h" #include "BaseDataDefine.h" #include "MainFrm.h" #include "FrameTimer.h" #include "WinInput.h" #include "Z3DManagedObject.h" #include #include #include #include #include #include "CCameraScript.h" #include "SceneStateMgr.h" #include "EffectCasher.h" #include "PageTriggerContainer.h" using namespace std; #include #define EFFECT_RAD 100.0f #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define KeyPressed( key ) HIBYTE( GetAsyncKeyState( key ) ) extern CCameraScript *g_CameraScript; ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorView IMPLEMENT_DYNCREATE(CWorldCreatorView, CView) BEGIN_MESSAGE_MAP(CWorldCreatorView, CView) //{{AFX_MSG_MAP(CWorldCreatorView) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() ON_WM_RBUTTONDOWN() ON_WM_RBUTTONUP() ON_WM_DESTROY() ON_WM_KEYUP() ON_WM_KEYDOWN() ON_WM_MOUSEWHEEL() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorView construction/destruction CWorldCreatorView::CWorldCreatorView() { // TODO: add construction code here m_MousePos.x=0; m_MousePos.y=0; m_MousePushLeft=FALSE; m_MousePushRight=FALSE; m_MouseMove.x=0; m_MouseMove.y=0; m_MouseInterface=-1; m_dlgEditTerrain=new CDlgEditTerrain(); m_dlgEditTerrain->Create(IDD_DIALOG_EDITTERRAIN); m_isShowEditTerrain=FALSE; m_bInfoShow=true; m_bAmbSphereShow=true; m_fWeatherTimeAdder=0.0f; m_isFirstRender=TRUE; m_bShowLightInfo=false; m_effect_drag = FALSE; m_clk_start = TRUE; m_pickmove.x = 0; m_pickmove.y = 0; m_nCameraViewMode=0; m_bSelectBsp = false; m_iBspTriggerValue = 0; m_iTriggerSet = 0; m_EditFixCameraEvent = new CDlgEditName(); m_EditFixCameraEvent->Create(IDD_DIALOG_EDITNAME); m_EditFixCameraEvent->ShowWindow(SW_HIDE); m_EditFixCameraEvent->SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER ); memset(m_strModelName,0,sizeof(char) * 256); m_bEditTerrain = false; m_bCtrl = false; m_bFirstDown = false; m_iBeforeMouseInterface = -1; } CWorldCreatorView::~CWorldCreatorView() { for(int i=0;iIsKindOf(RUNTIME_CLASS(CWorldCreatorDoc))); return (CWorldCreatorDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorView message handlers void CWorldCreatorView::RenderAmbienceSpheres( int SectorX, int SectorY ) { CSectorSoundMap & soundMap = CSectorSoundMap::GetInstance(); int nAmbiences = soundMap.GetAmbienceCount( SectorX, SectorY ); for( int i = 0; i < nAmbiences; i++ ) { SAmbience * pAmb = soundMap.GetAmbience( SectorX, SectorY, i ); m_Sphere.SetPosition( pAmb->m_fPosX, pAmb->m_fPosY, pAmb->m_fPosZ ); m_Sphere.SetTransparency( 40 ); m_Sphere.SetColor( 0.0f, 1.0f, 0.0f ); m_Sphere.SetRadius( pAmb->m_fMinDistance ); m_Sphere.Render(); m_Sphere.SetTransparency( 80 ); m_Sphere.SetColor( 1.0f, 0.0f, 0.0f ); m_Sphere.SetRadius( pAmb->m_fMaxDistance ); m_Sphere.Render(); /* // pick effect sphere if(m_SceneManager->m_bPickEffect) { m_Sphere.SetPosition(m_PickEffect.x,m_PickEffect.y,m_PickEffect.z); m_Sphere.SetTransparency( 80 ); m_Sphere.SetColor( 1.0f, 1.0f, 0.0f ); m_Sphere.SetRadius(EFFECT_RAD); m_Sphere.Render(); }*/ } } void CWorldCreatorView::RenderAllAmbiences() { try { matrix *matViewPosition=m_SceneManager->GetCamera()->GetMatPosition(); vector3 vecViewPos=matViewPosition->GetLoc(); int SectorX = vecViewPos.x / SECTORSIZE; int SectorY = vecViewPos.z / SECTORSIZE; if( SectorX < 0 || SectorY < 0 ) return; RenderAmbienceSpheres( SectorX, SectorY ); RenderAmbienceSpheres( SectorX, SectorY + 1 ); RenderAmbienceSpheres( SectorX, SectorY - 1 ); RenderAmbienceSpheres( SectorX + 1, SectorY ); RenderAmbienceSpheres( SectorX - 1, SectorY ); RenderAmbienceSpheres( SectorX + 1, SectorY + 1 ); RenderAmbienceSpheres( SectorX - 1, SectorY + 1 ); RenderAmbienceSpheres( SectorX + 1, SectorY - 1 ); RenderAmbienceSpheres( SectorX - 1, SectorY - 1 ); } catch( exception & e ) { MessageBox( e.what() ); } } void CWorldCreatorView::OnInitialUpdate() { CView::OnInitialUpdate(); CDlgStart dlgStart; dlgStart.DoModal(); CTexture::m_SkipMipLevel=dlgStart.m_nTextureSkipLevel; //m_BaseGraphicLayer.SetDriver(dlgStart.GetSelectDevice()); try { m_BaseGraphicLayer.Create(GetSafeHwnd(),true,true,0,0); //m_BaseGraphicLayer.DefaultTransform(); m_SceneManager=new CSceneManager(); m_SceneManager->SetDevice(m_BaseGraphicLayer.GetDevice()); m_SceneManager->SetCamera(&m_BaseGraphicLayer.m_ViewCamera); m_SceneManager->m_WeatherManager.SetClearColor(&m_BaseGraphicLayer.m_ClearColor); m_SceneManager->Create(); CSectorSoundMap & sndMap = CSectorSoundMap::GetInstance( GetSafeHwnd(), DSSCL_EXCLUSIVE ); //SectorSoundMapÀ» ÃʱâÈ­ // IDirectSound8 * pDSound8 = CZ3DSound::GetDirectSound(); // CSectorSoundMap::GetInstance( pDSound8 ); // CBGMController::GetInstance( pDSound8 ); CBGMController::GetInstance( sndMap.GetDS() ); m_SceneManager->m_bEditor=true; m_SceneUpdateID=CFrameTimer::Regist(35.0f); m_Sphere.Create( m_SceneManager->GetDevice(), 10, 20 ); //m_SceneManager->SetDevice(m_BaseGraphicLayer.GetDevice()); CSoundManager &smanager = CSoundManager::GetInstance(); smanager.Create(GetSafeHwnd(), DSSCL_EXCLUSIVE ); char strScriptPath[256]; /*sprintf(strScriptPath, "%s/Character/Data/Ani/", "c:/MP-Project"); g_ContAniKeyPack.SetFilePath( strScriptPath ); sprintf(strScriptPath, "%s/Character/Data/Mesh/", "c:/MP-Project"); g_ContLODMesh.SetFilePath( strScriptPath ); sprintf(strScriptPath, "%s/Character/Data/Tex/", "c:/MP-Project"); g_ContTexturePiece.SetFilePath( strScriptPath ); sprintf(strScriptPath, "%s/Character/Data/AMesh/", "c:/MP-Project"); g_ContAMesh.SetFilePath( strScriptPath ); sprintf(strScriptPath, "%s/Character/Data/Texture/", "c:/MP-Project"); g_ContTexture.SetFilePath( strScriptPath ); sprintf(strScriptPath, "%s/Character/Data/", "c:/MP-Project"); if( FALSE == CZ3DCharacterModel::_Init( strScriptPath ) ) { }*/ if( false == CZ3DGeneralChrModel::_BuildCMDSList() ) { } char path[256]; GetCurrentDirectory(256,path); sprintf(strScriptPath, "%s\\Character\\Data\\ChrEvent.EDS", path); if( false == CZ3DChrEventGenerator::_Load( strScriptPath ) ) { } //sprintf(strScriptPath, "%s/Character/Data/Tex/", "c:/MP-Project"); //CZ3DRenderable::_Init( m_BaseGraphicLayer.GetDevice() ); //Z3DTexture::_Init( m_BaseGraphicLayer.GetDevice(), strScriptPath, 0 ); m_ChrManager.Create(); g_DeviceInput.Init(); } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } // TODO: Add your specialized code here and/or call the base class m_pLightInfoDlg=new CDlgLightLoad(); m_pLightInfoDlg->Create(IDD_DIALOG_LIGHTLOAD); } void CWorldCreatorView::Render() { if(m_isFirstRender) { m_isFirstRender=FALSE; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; //mf->PropertySetup(); } if(KeyPressed('O')) CSceneStateMgr::_SetD3DRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME); if(KeyPressed('P')) CSceneStateMgr::_SetD3DRenderState(D3DRS_FILLMODE,D3DFILL_SOLID); if(KeyPressed(VK_F5)) { CSceneManager::PickingObjectReload(); } if(KeyPressed(VK_MENU) && KeyPressed('S')) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->OnScenesave(); } if(KeyPressed(VK_MENU) && KeyPressed('G')) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->OnSectormove(); } float fWeatherTime=m_SceneManager->GetWeatherTime(); fWeatherTime+=m_fWeatherTimeAdder; if(fWeatherTime>=24.0f) { fWeatherTime=0.0f; } m_SceneManager->SetWeatherTime(fWeatherTime); if(KeyPressed('Q')) { if(m_isShowEditTerrain) { m_dlgEditTerrain->ShowWalkPossible(); } } if(KeyPressed(VK_DELETE)) { if(m_bShowLightInfo) { m_pLightInfoDlg->ShowWindow(SW_HIDE); m_bShowLightInfo=false; } if(CSceneManager::m_pBspScene && CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight!=-1) { CSceneManager::m_pBspScene->m_HouseObject->m_pBspObject->DeleteLight(); } } try { CSceneManager::m_cRenderPolygon=0; CSceneManager::m_cRenderVertex=0; CSceneManager::m_cRenderSectorPoly=0; CSceneManager::m_cRenderSectorVertex=0; CSceneManager::m_cRenderPrimitive=0; //m_SceneManager->MouseMove(0,0); CameraMouseMove(0,0); CFrameTimer::UpdateTime(); m_ChrManager.Update(0); m_SceneManager->UpdateScene(CFrameTimer::GetUpdateTimer(m_SceneUpdateID)); if(m_nCameraViewMode==1) m_ChrManager.SetCamera(); m_BaseGraphicLayer.PrefareRender(); m_BaseGraphicLayer.GetDevice()->BeginScene(); m_SceneManager->RenderInCubemap(); m_SceneManager->Render(); if( m_bAmbSphereShow ) RenderAllAmbiences(); int snum = CSceneManager::m_EffectManager.GetInterfaceScriptNum(); for(int scnt = 0;scntGetDevice() ); if( m_ChrManager.m_nFocusCharacter >= 0 ) { BGMC.Update( m_ChrManager.m_lstCharData[m_ChrManager.m_nFocusCharacter]->m_vecPos.x, m_ChrManager.m_lstCharData[m_ChrManager.m_nFocusCharacter]->m_vecPos.y, m_ChrManager.m_lstCharData[m_ChrManager.m_nFocusCharacter]->m_vecPos.z); } // CSceneStateMgr::_SetD3DTextureStageState(0, D3DTSS_ADDRESSU,D3DTADDRESS_WRAP); CSceneStateMgr::_SetD3DTextureStageState(0, D3DTSS_ADDRESSV,D3DTADDRESS_WRAP); CSceneStateMgr::_SetD3DTextureStageState(0, D3DTSS_ADDRESSW,D3DTADDRESS_WRAP); CSceneManager::m_EffectManager.RenderInterfaceScript(); // m_ChrManager.Render(m_BaseGraphicLayer.GetDevice()); /* //sphere rendering if(m_SceneManager->m_bPickEffect) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if(mf->m_PickMode ==7) { vector3 *tmp = m_SceneManager->m_PickEffect->GetCenter(); if(tmp) { m_Sphere.SetPosition(tmp->x,tmp->y,tmp->z); m_Sphere.SetTransparency( 200 ); m_Sphere.SetColor( 1.0f, 1.0f, 0.0f ); m_Sphere.SetRadius(EFFECT_RAD); m_Sphere.Render(); } } // effect pick button not selected else { m_SceneManager->m_bPickEffect = FALSE; m_SceneManager->m_PickEffect = NULL; } } */ if(m_MouseInterface == 103) { int i; for(i=0;iRender(); } } if(CSceneManager::m_pPickSectorLight != NULL) { bool bKeyPushed = false; ///////////////////////////// vector3 vecToward = CSceneManager::GetCamera()->GetViewTowardVector(); vector3 vecUp = CSceneManager::GetCamera()->GetViewUpVector(); vector3 vecCross = vecToward ^ vecUp; vecToward.Normalize(); vecUp.Normalize(); vecCross.Normalize(); CSectorLightMap *pMap = m_SceneManager->m_MapStorage.FindLightMap(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.z); // CSectorEffectMap *pEffectMap = m_SceneManager->m_MapStorage.FindEffectMap(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.z); if(pMap != NULL) { if(KeyPressed(VK_LEFT)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x + vecCross.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z + vecCross.z * 10.0f); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x + vecCross.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z + vecCross.z * 1.0f); */ CSceneManager::m_pPickSectorLight->m_vecPos.x = CSceneManager::m_pPickSectorLight->m_vecPos.x + vecCross.x * 10.0f; CSceneManager::m_pPickSectorLight->m_vecPos.z = CSceneManager::m_pPickSectorLight->m_vecPos.z + vecCross.z * 10.0f; bKeyPushed = true; } if(KeyPressed(VK_RIGHT)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x - vecCross.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z - vecCross.z * 10.0f); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x - vecCross.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z - vecCross.z * 1.0f); */ CSceneManager::m_pPickSectorLight->m_vecPos.x = CSceneManager::m_pPickSectorLight->m_vecPos.x - vecCross.x * 10.0f; CSceneManager::m_pPickSectorLight->m_vecPos.z = CSceneManager::m_pPickSectorLight->m_vecPos.z - vecCross.z * 10.0f; bKeyPushed = true; } if(KeyPressed(VK_UP)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x + vecToward.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z + vecToward.z * 10.0f); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x + vecToward.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z + vecToward.z * 1.0f); */ CSceneManager::m_pPickSectorLight->m_vecPos.x = CSceneManager::m_pPickSectorLight->m_vecPos.x + vecToward.x * 10.0f; CSceneManager::m_pPickSectorLight->m_vecPos.z = CSceneManager::m_pPickSectorLight->m_vecPos.z + vecToward.z * 10.0f; bKeyPushed = true; } if(KeyPressed(VK_DOWN)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x - vecToward.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z - vecToward.z * 10.0f); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x - vecToward.x * 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z - vecToward.z * 1.0f); */ CSceneManager::m_pPickSectorLight->m_vecPos.x = CSceneManager::m_pPickSectorLight->m_vecPos.x - vecToward.x * 10.0f; CSceneManager::m_pPickSectorLight->m_vecPos.z = CSceneManager::m_pPickSectorLight->m_vecPos.z - vecToward.z * 10.0f; bKeyPushed = true; } if(KeyPressed(VK_HOME)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y + 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.z); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y + 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.z); */ CSceneManager::m_pPickSectorLight->m_vecPos.y += 10.0f; bKeyPushed = true; } if(KeyPressed(VK_END)) { pMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y - 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.z); /* pEffectMap->Move(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z, CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y - 10.0f,CSceneManager::m_pPickSectorLight->m_vecPos.z); */ CSceneManager::m_pPickSectorLight->m_vecPos.y -= 10.0f; bKeyPushed = true; } if(KeyPressed(VK_ESCAPE)) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_SectorLightManager.m_pPickLight = NULL; } CSceneManager::m_pPickSectorLight = NULL; bKeyPushed = true; } if(KeyPressed(VK_DELETE)) { pMap->Delete(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z); CSceneManager::m_pPickSectorLight = NULL; /* pEffectMap->Delete(CSceneManager::m_pPickSectorLight->m_vecPos.x,CSceneManager::m_pPickSectorLight->m_vecPos.y,CSceneManager::m_pPickSectorLight->m_vecPos.z); */ for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateSectorLight(); } bKeyPushed = true; } /* if(bKeyPushed == true) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateSectorLight(); } }*/ } } CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if(mf->m_PickMode == 7) { int change_point = 1.0f; if(m_SceneManager->m_PickEffect) { if(KeyPressed(VK_CONTROL)) { change_point +=100.0f; } if(KeyPressed(VK_HOME)) { //m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y; m_SceneManager->PickEffectMove(0.0f,0.0f,0.0f,0.0,change_point,1); } else if(KeyPressed(VK_END)) { m_SceneManager->PickEffectMove(0.0f,0.0f,0.0f,0.0,-change_point,1); } else if(KeyPressed('V')) { if(KeyPressed(VK_LEFT)) { m_SceneManager->PickEffectMove(m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].x-change_point, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].z,0.0,0.0f,0); } else if(KeyPressed(VK_RIGHT)) { m_SceneManager->PickEffectMove(m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].x+change_point, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].z,0.0,0.0f,0); } if(KeyPressed(VK_UP)) { m_SceneManager->PickEffectMove(m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].x, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].z+change_point,0.0,0.0f,0); } else if(KeyPressed(VK_DOWN)) { m_SceneManager->PickEffectMove(m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].x, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y, m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].z-change_point,0.0,0.0f,0); } } //shpere render if(m_SceneManager->m_PickEffect->pick_index >= 0) { vector3 tmp = m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index]; m_Sphere.SetPosition(tmp.x,tmp.y,tmp.z); m_Sphere.SetTransparency( 200 ); m_Sphere.SetColor( 1.0f, 0.0f,1.0f ); m_Sphere.SetRadius(20); m_Sphere.Render(); } }//if } if(m_bInfoShow) { char strSector[256]; sprintf(strSector,"Sector Render = %d",CSceneManager::m_cRenderSector); m_BaseGraphicLayer.m_pFont->DrawText( 2, 300, D3DCOLOR_ARGB(255,255,0,0),strSector); sprintf(strSector,"Render Poly = %d",CSceneManager::m_cRenderPolygon); m_BaseGraphicLayer.m_pFont->DrawText( 2, 500, D3DCOLOR_ARGB(255,255,0,0),strSector); sprintf(strSector,"Render Vertex = %d",CSceneManager::m_cRenderVertex); m_BaseGraphicLayer.m_pFont->DrawText( 2, 540, D3DCOLOR_ARGB(255,255,0,0),strSector); sprintf(strSector,"Render Primitive = %d",CSceneManager::m_cRenderPrimitive); m_BaseGraphicLayer.m_pFont->DrawText( 2, 560, D3DCOLOR_ARGB(255,255,0,0),strSector); sprintf(strSector,"Sector Render Poly = %d",CSceneManager::m_cRenderSectorPoly); m_BaseGraphicLayer.m_pFont->DrawText( 2, 600, D3DCOLOR_ARGB(255,255,0,0),strSector); sprintf(strSector,"Sector Render Vertex = %d",CSceneManager::m_cRenderSectorVertex); m_BaseGraphicLayer.m_pFont->DrawText( 2, 640, D3DCOLOR_ARGB(255,255,0,0),strSector); // if(m_ChrManager.m_lstCharData.num > 0) { float fDir = m_ChrManager.m_lstCharData[0]->m_fDirection - FLOAT_PHI; if (fDir < 0.0f) fDir = FLOAT_PHI * 2 + fDir; sprintf(strSector, "X = %f, Y = %f, Z = %f, Dir = %f", m_ChrManager.m_lstCharData[0]->m_vecPos.x / 100.0f, m_ChrManager.m_lstCharData[0]->m_vecPos.y / 100.0f, m_ChrManager.m_lstCharData[0]->m_vecPos.z / 100.0f, fDir); m_BaseGraphicLayer.m_pFont->DrawText( 2, 380, D3DCOLOR_ARGB(255,255,0,0),strSector); } // sprintf(strSector,"Weather Time= %f",CSceneManager::GetWeatherTime()); m_BaseGraphicLayer.m_pFont->DrawText( 2, 400, D3DCOLOR_ARGB(255,255,0,0),strSector); vector3 dirCamera = m_SceneManager->m_ViewCamera->GetViewTowardVector(); dirCamera.Normalize(); sprintf(strSector,"Camera Direction= %f, %f, %f", dirCamera.x, dirCamera.y, dirCamera.z); m_BaseGraphicLayer.m_pFont->DrawText( 2, 430, D3DCOLOR_ARGB(255,255,0,0),strSector); if(m_SceneManager->m_PickEffect) { int pickeffindex = m_SceneManager->m_PickEffect->pick_index; sprintf(strSector,"Pick Effect Rot : X = %f, Y = %f, Z = %f",(m_SceneManager->m_PickEffect->m_vecEffectRot[pickeffindex].x), (m_SceneManager->m_PickEffect->m_vecEffectRot[pickeffindex].y), (m_SceneManager->m_PickEffect->m_vecEffectRot[pickeffindex].z)); m_BaseGraphicLayer.m_pFont->DrawText(2,200,D3DCOLOR_ARGB(255,0,255,255),strSector); } m_BaseGraphicLayer.ShowState(); } //m_Font.Render(m_BaseGraphicLayer.GetDevice(),0,0); //*/ m_BaseGraphicLayer.GetDevice()->EndScene(); m_BaseGraphicLayer.Flip(); } catch(CError &e) { AfxMessageBox(e.GetErrorMsg()); } if(m_MouseInterface==20) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if(mf->m_NotMove==1) return; if(KeyPressed(VK_MENU)) m_SceneManager->PickObjectMove(0.0f,0.0f,0.0f,0.0f,0.0f,3); if(KeyPressed(VK_SHIFT)) { m_SceneManager->PickObjectMove(0.0f,0.0f,0.0f,0.0f,0.0f,1); } } } void CWorldCreatorView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_MousePushLeft=TRUE; if(m_clk_start) { m_PickPos = point; m_clk_start = FALSE; } m_MousePos=point; m_SceneManager->PickMakeRay(point.x,point.y, m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); if(m_isShowEditTerrain) { if(m_dlgEditTerrain->m_isSmallSmooth==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); if(m_dlgEditTerrain->m_SelectSectorScene && m_MousePushLeft) { //m_dlgEditTerrain->MouseEdit(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); m_dlgEditTerrain->MouseEditSmooth(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); } } if(m_dlgEditTerrain->m_isMakeRoad==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); m_dlgEditTerrain->SetMakeRoadStartVertex(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); } } //LandScapeEffect picking ó¸® /* if(m_MouseInterface >= 100 && m_LandscapeEffectValue.m_Fix) { CSectorLandscapeEffectMap* check; m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); check = av->m_SceneManager->m_MapStorage.FindLandscapeEffect(vecPos.x,vecPos.z); if(check != NULL) { for(int i=0;inum;i++); } else MessageBox("not effect"); }*/ if(m_MouseInterface==1) { // Add Building to Scene Data; m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); try { vector3 vecPos=m_SceneManager->PickPointTerrain(); if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); //m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.AddHouse(vecPos.x,vecPos.y,vecPos.z); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateHouseObjectLastIn(); } } mf->m_PickMode = -1; mf->UnPickButton(); mf->OnCheckPickhouse(); m_bFirstDown = true; m_iBeforeMouseInterface = 1; m_MouseInterface = 20; /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateHouseObject(); }*/ } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==3) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); // Add Object to Scene Data; try { if(!CSceneManager::m_PickHouseScene) { vector3 vecPos=m_SceneManager->PickPointTerrain(); if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; // m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos.x,vecPos.y,vecPos.z); if(m_SceneManager->m_PickHouseScene==NULL) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateObjectLastIn(); m_SceneManager->m_HeightField.m_SectorScene[cSector].DynamicLoad(); } } /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateObject(); }*/ mf->m_PickMode = -1; mf->UnPickButton(); mf->OnCheckPickobect(); m_bFirstDown = true; m_iBeforeMouseInterface = 3; m_MouseInterface = 20; } } else { vector3 vecPos=m_SceneManager->m_vecPickRayStart+m_SceneManager->m_vecPickRayDir*400.0f; if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; // m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos.x,vecPos.y,vecPos.z); if(m_SceneManager->m_PickHouseScene==NULL) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateObjectLastIn(); m_SceneManager->m_HeightField.m_SectorScene[cSector].DynamicLoad(); } } /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateObject(); }*/ mf->m_PickMode = -1; mf->UnPickButton(); mf->OnCheckPickobect(); m_bFirstDown = true; m_iBeforeMouseInterface = 3; m_MouseInterface = 20; } } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==-1 || m_MouseInterface==20) { /*if(m_MouseInterface!=70) m_SceneManager->m_bPickEffect = FALSE; //effect À̵¿ /* if(m_MouseInterface == 70 && m_SceneManager->m_bPickEffect) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); vector3 *pickeffect = m_SceneManager->m_PickEffect->GetCenter(); for(int i=0;im_EffectNum;i++) { CX3DEffect *PickEffect = m_SceneManager->m_EffectManager.m_lstEffect[i]; vector3 *target = PickEffect->GetCenter(); if(target->x == pickeffect->x && target->y == pickeffect->y && target->z == pickeffect->z) { PickEffect->SetCenter(vecPos.x,vecPos.y,vecPos.z); m_SceneManager->m_EffectManager.m_lstEffect[i] = PickEffect; } } } */ // Nothing not choose the Scene-node; //float xp,yp,zp; //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); m_SceneManager->PickObject(vecPos.x,vecPos.y,vecPos.z,mf->m_PickMode); // Minotaurs Picking m_SceneManager->MakeUndoData(); if(m_SceneManager->m_PickHouseScene || m_SceneManager->m_PickObjectScene) m_MouseInterface=20; /* //effect if(m_SceneManager->m_PickEffect) m_MouseInterface = 70; else { m_SceneManager->m_bPickEffect = FALSE; }*/ static int nSelectLight=-1; if(m_SceneManager->m_pBspScene && m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight!=0) { if(nSelectLight!=m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight) { nSelectLight=m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight; m_pLightInfoDlg->ShowWindow(SW_SHOW); m_bShowLightInfo=true; m_pLightInfoDlg->m_fLightRange=m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList[m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight].m_Photons/7500.0f; //m_pLightInfoDlg->m_LightColor.SetSelectionMode(CP_MODE_TEXT); m_pLightInfoDlg->m_LightColor.SetColour(RGB( m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList[m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight].m_LightColor.r, m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList[m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight].m_LightColor.g, m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_EditLightList[m_SceneManager->m_pBspScene->m_HouseObject->m_pBspObject->m_SelectLight].m_LightColor.b)); //m_pLightInfoDlg->m_cLightColor=RGB(255,0,0); m_pLightInfoDlg->m_bEditMode=true; m_pLightInfoDlg->UpdateData(FALSE); } } } CView::OnLButtonDown(nFlags, point); } void CWorldCreatorView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default SetFocus(); if(m_bFirstDown) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; m_bFirstDown = false; m_MouseInterface = m_iBeforeMouseInterface; mf->m_PickMode = -1; m_SceneManager->UnPicking(); mf->UnPickButton(); } m_MousePushLeft=FALSE; m_clk_start = TRUE; //m_SceneManager->m_PickEffect = NULL; //m_SceneManager->m_bPickEffect = FALSE; if(m_isShowEditTerrain) { // Terrain Editing m_MouseInterface=0; if(m_dlgEditTerrain->m_SelectSectorScene!=NULL) { if(m_dlgEditTerrain->m_isMakeRoad==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); m_dlgEditTerrain->MakeRoad(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); } if(m_dlgEditTerrain->m_isMustDivide==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); m_dlgEditTerrain->SelectMustDivideVertex(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); } } if(m_dlgEditTerrain->m_SelectSectorScene==NULL) { int SectorPx,SectorPy; int NowSectorPx,NowSectorPy; float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); m_dlgEditTerrain->m_SelectSectorScene=m_SceneManager->PickTerrain();//m_SceneManager->PickTerrain(xp,yp,zp); if(m_dlgEditTerrain->m_SelectSectorScene==NULL) return; SectorPx=(int)(m_dlgEditTerrain->m_SelectSectorScene->m_AccumulateTM._41/SECTORSIZE); SectorPy=(int)(m_dlgEditTerrain->m_SelectSectorScene->m_AccumulateTM._43/SECTORSIZE); for(int ix=0;ixm_HeightField.m_SectorScene[ix+iy*LSIZEX].m_AccumulateTM._41/SECTORSIZE); NowSectorPy=(int)(m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX].m_AccumulateTM._43/SECTORSIZE); if( SectorPx-1 == NowSectorPx && SectorPy-1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[0]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx == NowSectorPx && SectorPy-1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[1]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx+1 == NowSectorPx && SectorPy-1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[2]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx-1 == NowSectorPx && SectorPy == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[3]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx+1 == NowSectorPx && SectorPy == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[4]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx-1 == NowSectorPx && SectorPy+1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[5]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx == NowSectorPx && SectorPy+1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[6]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; if( SectorPx+1 == NowSectorPx && SectorPy+1 == NowSectorPy) m_dlgEditTerrain->m_SelectNeighborScene[7]=&m_SceneManager->m_HeightField.m_SectorScene[ix+iy*LSIZEX]; } } m_dlgEditTerrain->InitForEditTerrrain(); } } if(m_MouseInterface == 30) // By Minotaurs ¹°°ü·Ã { //Adder water to map m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); if(m_SceneManager->PickTerrain()==NULL) return; float xp=m_SceneManager->PickTerrain()->m_AccumulateTM._41; float zp=m_SceneManager->PickTerrain()->m_AccumulateTM._43; float yp=0.0f; try { //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_dlgMakeWater->UpdateData(); CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); if(mf->m_dlgMakeWater->m_bWaterRelection) { av->m_SceneManager->m_MapStorage.AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), true); /* CMapStorage::AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), true); */ } else { av->m_SceneManager->m_MapStorage.AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), false); /* CMapStorage::AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), false); */ } //(bool)mf->m_dlgMakeWater->m_bWaterRelection); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateWater(); } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } /* if(m_MouseInterface==1) { // Add Building to Scene Data; m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); try { vector3 vecPos=m_SceneManager->PickPointTerrain(); if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); //m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.AddHouse(vecPos.x,vecPos.y,vecPos.z); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateHouseObjectLastIn(); } } /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateHouseObject(); }*/ /* } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } */ if(m_MouseInterface==20) // Minotaurs { m_SceneManager->m_bIsPickObjectMoving=MOVE_NOTHING; //m_SceneManager->MakeUndoData(); } if(m_MouseInterface==2) { // Add Light to Scene Data; m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); try { vector3 vecPos=m_SceneManager->m_vecPickRayStart+m_SceneManager->m_vecPickRayDir*400.0f; m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; //mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos.x,vecPos.y,vecPos.z); if(m_SceneManager->m_PickHouseScene!=NULL) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageLightContainer.AddLight(vecPos.x,vecPos.y,vecPos.z); } else if(m_SceneManager->m_pBspScene) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageLightContainer.AddLight(m_SceneManager->m_vecPickRayStart.x,m_SceneManager->m_vecPickRayStart.y,m_SceneManager->m_vecPickRayStart.z); } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } /* if(m_MouseInterface==3) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); // Add Object to Scene Data; try { if(!CSceneManager::m_PickHouseScene) { vector3 vecPos=m_SceneManager->PickPointTerrain(); if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; // m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos.x,vecPos.y,vecPos.z); if(m_SceneManager->m_PickHouseScene==NULL) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateObjectLastIn(); } } /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateObject(); }*/ /* } } else { vector3 vecPos=m_SceneManager->m_vecPickRayStart+m_SceneManager->m_vecPickRayDir*400.0f; if(m_bCtrl) // Ä«¸Þ¶ó ¾Õ¿¡ »ý¼º { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vecPos.x = tmpview._41; vecPos.y = tmpview._42; vecPos.z = tmpview._43; vector3 vecToward = m_SceneManager->GetCamera()->GetViewTowardVector(); vecToward.Normalize(); vecPos.x += vecToward.x * 100.0f; vecPos.y += vecToward.y * 100.0f; vecPos.z += vecToward.z * 100.0f; } if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; // m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos.x,vecPos.y,vecPos.z); if(m_SceneManager->m_PickHouseScene==NULL) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateObjectLastIn(); } } /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateObject(); }*/ /* } } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } }*/ if(m_MouseInterface==10) { // Add to MapStorage ,WideTexture m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); try { vector3 vecPos=m_SceneManager->PickPointTerrain(); if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageWideContainer.AddWideTexture(vecPos.x,vecPos.y,vecPos.z); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateWideMap(); } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==50) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; int nTotal=mf->m_dlgMakePlant->m_DrawTreeList.GetCount(); int nCount=0; long TreeKind=mf->m_dlgMakePlant->m_TreeList.GetCurSel(); CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); vector3 vecLens; CString strTree; for(float fpx=vecPos.x-mf->m_dlgMakePlant->m_fTreeRange;fpx<=vecPos.x+mf->m_dlgMakePlant->m_fTreeRange;fpx+=LINTERVAL) { for(float fpz=vecPos.z-mf->m_dlgMakePlant->m_fTreeRange;fpz<=vecPos.z+mf->m_dlgMakePlant->m_fTreeRange;fpz+=LINTERVAL) { vector3 vecTreePos(fpx,0.0f,fpz); vecLens=vecPos-vecTreePos; vecLens.y=0.0f; if(vecLens.GetLens()<=mf->m_dlgMakePlant->m_fTreeRange) { if(rand()%100m_dlgMakePlant->m_fTreeRate*100.0f) { nCount++; nCount=nCount%nTotal; mf->m_dlgMakePlant->m_DrawTreeList.GetText(nCount,strTree); int nTreeCate=atoi(strTree.LockBuffer()); av->m_SceneManager->m_MapStorage.AddPlantMap(fpx,vecPos.y,fpz,nTreeCate); } } } } //CMapStorage::AddPlantMap(vecPos.x,vecPos.y,vecPos.z,TreeKind); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GeneratePlant(); } } } if(m_MouseInterface==51) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); if(vecPos.x==0.0f && vecPos.y==0.0f && vecPos.z==0.0f) return; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_dlgMakeWater->UpdateData(); CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); //CMapStorage::DelPlantMap(vecPos.x,vecPos.y,vecPos.z); vector3 vecLens; for(float fpx=vecPos.x-mf->m_dlgMakePlant->m_fTreeRange;fpx<=vecPos.x+mf->m_dlgMakePlant->m_fTreeRange;fpx+=LINTERVAL) { for(float fpz=vecPos.z-mf->m_dlgMakePlant->m_fTreeRange;fpz<=vecPos.z+mf->m_dlgMakePlant->m_fTreeRange;fpz+=LINTERVAL) { vector3 vecTreePos(fpx,0.0f,fpz); vecLens=vecPos-vecTreePos; vecLens.y=0.0f; if(vecLens.GetLens()<=mf->m_dlgMakePlant->m_fTreeRange) { av->m_SceneManager->m_MapStorage.DelPlantMap(fpx,vecPos.y,fpz); } } } for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GeneratePlant(); } } } if(m_MouseInterface==60) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); } //effect ÇÇÅ· CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; //effect Ãß°¡ if(m_MouseInterface == 70 && mf->m_PickMode != 7) { m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CSectorScene *pSector=m_SceneManager->PickTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); if(vecPos.x != 0.0f && vecPos.y != 0.0f && vecPos.z != 0.0f) { av->m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,m_Select_Effect.LockBuffer(),0.0f,0.0f,0.0f); pSector->GenerateEffect(); } m_MouseInterface = -1; } if(m_MouseInterface == 95) { D3DXMATRIX tmpview; m_SceneManager->GetDevice()->GetTransform(D3DTS_VIEW,&tmpview); D3DXMatrixInverse(&tmpview,NULL,&tmpview); vector3 tmppos; tmppos.x = tmpview._41; tmppos.y = tmpview._42; tmppos.z = tmpview._43; m_SceneManager->PickBspMove(tmppos.x,tmppos.y,tmppos.z,0.0f,0.0f); m_MouseInterface = -1; } //effect picking if(mf->m_PickMode == 7) { m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CSectorScene *pSector=m_SceneManager->PickTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); av->m_SceneManager->PickEffect(vecPos.x,vecPos.y,vecPos.z); } /* if(m_MouseInterface == 70 && !m_effect_drag) m_SceneManager->m_bPickEffect = FALSE;*/ // effect Ãß°¡ ó¸® /* if(m_MouseInterface==70 && m_effect_drag) { CString t; CX3DEffect *pEffect = new CX3DEffect(); m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); /* m_SceneManager->AddEffect(pEffect); pEffect->Load(EFFECTPATH,m_Select_Effect); pEffect->SetLoop(TRUE); pEffect->SetCenter(vecPos.x,vecPos.y,vecPos.z); pEffect->SetAxis(0.0f,0.0f,0.0f); pEffect->map_effect = true; */ /* int indexx=(int)(vecPos.x/SECTORSIZE); int indexy=(int)(vecPos.z/SECTORSIZE); pEffect->m_SectorX = indexx; pEffect->m_SectorY = indexy; char *buf = m_Select_Effect.LockBuffer(); m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,buf); //m_SceneManager->m_Effect_Map.Add_Effect(buf,vecPos,indexx,indexy); //av->m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,0); /*CMapStorage::AddEffectMap(vecPos.x,vecPos.y,vecPos.z,0); */ //sector map create /* for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > vecPos.x && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= vecPos.z && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > vecPos.z) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateEffect(); } } m_effect_drag = FALSE; m_MouseInterface = -1; } */ if(m_MouseInterface==40) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); av->m_SceneManager->m_MapStorage.AddFallMap(vecPos.x,vecPos.y,vecPos.z,mf->m_dlgMakeFall->m_fFallPosX, mf->m_dlgMakeFall->m_fFallPosY, mf->m_dlgMakeFall->m_fFallRot, mf->m_dlgMakeFall->m_FallHeightList, mf->m_dlgMakeFall->m_FallLeftList, mf->m_dlgMakeFall->m_FallRightList, mf->m_dlgMakeFall->m_FallAddXList, mf->m_dlgMakeFall->m_FallColorList); /* CMapStorage::AddFallMap(vecPos.x,vecPos.y,vecPos.z,mf->m_dlgMakeFall->m_fFallPosX, mf->m_dlgMakeFall->m_fFallPosY, mf->m_dlgMakeFall->m_fFallRot, mf->m_dlgMakeFall->m_FallHeightList, mf->m_dlgMakeFall->m_FallLeftList, mf->m_dlgMakeFall->m_FallRightList, mf->m_dlgMakeFall->m_FallAddXList, mf->m_dlgMakeFall->m_FallColorList); */ for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateFall(); } } if(m_MouseInterface==80) { //AddSoundObject m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); if( vecPos.x != 0.0f || vecPos.y != 0.0f ) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); //mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.AddHouse(vecPos.x,vecPos.y,vecPos.z); CSectorScene *pSector=m_SceneManager->PickTerrain(); //pSector->GenerateSound(); mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos,"Sound.R3S"); long lObjectSceneID=av->m_SceneManager->m_MapStorage.m_TotalObjectSceneCount-1; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageSoundContainer.AddSound(vecPos,lObjectSceneID); pSector->GenerateObject(); m_MouseInterface=-1; } //av->m_SceneManager->m_MapStorage.AddSoundMap(vecPos.x,vecPos.y,vecPos.z,,); //av->m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,0); } if(m_MouseInterface==90) { //AddTriggerObject m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); if( vecPos.x != 0.0f || vecPos.y != 0.0f ) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); CSectorScene * pSector=m_SceneManager->PickTerrain(); CPageTriggerContainer & p = mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageTriggerContainer; vector3 oldPos; long objID; p.GetPos( p.GetCurrentSelected(), oldPos.x, oldPos.y, oldPos.z, objID ); if( oldPos.x != 0.0f || oldPos.y != 0.0f || oldPos.z != 0.0f ) { av->m_SceneManager->m_MapStorage.DelMeshMap( oldPos.x, oldPos.y, oldPos.z, objID ); } vecPos.y = m_SceneManager->m_HeightField.GetHeight( vecPos ); vecPos.y += 100.0f; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(vecPos,"Cube.R3S"); objID=av->m_SceneManager->m_MapStorage.m_TotalObjectSceneCount-1; p.SetPos( p.GetCurrentSelected(), vecPos.x, vecPos.y, vecPos.z, objID ); pSector->GenerateObject(); m_MouseInterface=-1; } } if(m_MouseInterface>=100) { int nEffectMethod=m_MouseInterface-100; static bool switchrange = false; m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CSectorScene *pSector=m_SceneManager->PickTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); if(vecPos.x != 0.0f && vecPos.y != 0.0f && vecPos.z != 0.0f) { CString effname; if(!m_LandscapeEffectValue.m_Fix) { DWORD dwBlend[2]; float Param[50]; int iParam[20]; CString filename; //CString effname; // effect fix fiag false set CSectorLandscapeEffectMap *find_effect; find_effect = av->m_SceneManager->m_MapStorage.FindLandscapeEffect(vecPos.x,vecPos.z); if(find_effect != NULL) { for(int i = 0;im_LandscapeEffect.num;i++) { if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 5) { if(find_effect->m_LandscapeEffect[i].m_IntParam[2] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[2] = 0; pSector->GenerateLandscapeEffect(); return; } } if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 4) { // wave if(find_effect->m_LandscapeEffect[i].m_IntParam[0] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[0] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 3) {//mesh morph if(find_effect->m_LandscapeEffect[i].m_IntParam[2] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[2] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 2) { //boid if(find_effect->m_LandscapeEffect[i].m_IntParam[1] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[1] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 1) { //fog if(find_effect->m_LandscapeEffect[i].m_IntParam[1] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[1] = 0; pSector->GenerateLandscapeEffect(); return; } } } }//if if(nEffectMethod == 0) { Param[0] = m_LandscapeEffectValue.m_A1; Param[1] = m_LandscapeEffectValue.m_A2; Param[2] = m_LandscapeEffectValue.m_A3; Param[3] = m_LandscapeEffectValue.m_A4; Param[4] = m_LandscapeEffectValue.m_R1; Param[5] = m_LandscapeEffectValue.m_R2; Param[6] = m_LandscapeEffectValue.m_R3; Param[7] = m_LandscapeEffectValue.m_R4; Param[8] = m_LandscapeEffectValue.m_G1; Param[9] = m_LandscapeEffectValue.m_G2; Param[10] = m_LandscapeEffectValue.m_G3; Param[11] = m_LandscapeEffectValue.m_G4; Param[12] = m_LandscapeEffectValue.m_B1; Param[13] = m_LandscapeEffectValue.m_B2; Param[14] = m_LandscapeEffectValue.m_B3; Param[15] = m_LandscapeEffectValue.m_B4; Param[16] = (float)m_LandscapeEffectValue.m_Center; Param[17] = m_LandscapeEffectValue.m_FadeIn; Param[18] = m_LandscapeEffectValue.m_FadeInSpeed; Param[19] = m_LandscapeEffectValue.m_FadeOut; Param[20] = m_LandscapeEffectValue.m_Gx; Param[21] = m_LandscapeEffectValue.m_Gy; Param[22] = m_LandscapeEffectValue.m_Gz; Param[23] = m_LandscapeEffectValue.m_ImX; Param[24] = m_LandscapeEffectValue.m_ImY; Param[25] = m_LandscapeEffectValue.m_ImZ; Param[26] = m_LandscapeEffectValue.m_Rad; Param[27] = m_LandscapeEffectValue.m_Size; iParam[0] = m_LandscapeEffectValue.m_Num; iParam[1] = m_LandscapeEffectValue.m_Fix; av->m_SceneManager->m_MapStorage.AddLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod+1,dwBlend,Param,iParam,filename.LockBuffer(),NULL); pSector->GenerateLandscapeEffect(); } else if(nEffectMethod == 1) { //boid // boid num iParam[0] = m_LandscapeEffectValue.m_BoidNum; iParam[1] = m_LandscapeEffectValue.m_Fix; iParam[2] = m_LandscapeEffectValue.m_BoidAct; iParam[3] = m_LandscapeEffectValue.m_BoidKind; Param[0] = m_LandscapeEffectValue.m_BoidRange; Param[1] = m_LandscapeEffectValue.m_BoidSpeed; Param[2] = m_LandscapeEffectValue.m_BoidRange2; Param[3] = m_LandscapeEffectValue.m_BoidRange3; Param[4] = m_LandscapeEffectValue.m_BoidVot; Param[5] = m_LandscapeEffectValue.m_BoidLimitHeight; av->m_SceneManager->m_MapStorage.AddLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod+1,dwBlend,Param,iParam,m_LandscapeEffectValue.m_BoidName.LockBuffer(),NULL); pSector->GenerateLandscapeEffect(); } else if(nEffectMethod == 2) { // mesh morph if(!switchrange) { // ÀÏ¹Ý Ãß°¡ ¸ðµå iParam[0] = m_LandscapeEffectValue.m_loop; iParam[1] = m_LandscapeEffectValue.m_switch; iParam[2] = m_LandscapeEffectValue.m_Fix; iParam[3] = m_LandscapeEffectValue.m_RandAni; iParam[4] = m_LandscapeEffectValue.m_ObjectCulling; Param[0] = m_LandscapeEffectValue.m_switchRad; Param[1] = m_LandscapeEffectValue.m_Vot; Param[2] = m_LandscapeEffectValue.m_RandMax; Param[3] = m_LandscapeEffectValue.m_RandMin; Param[4] = 0.0f; Param[5] = 0.0f; Param[6] = 0.0f; // eff ÆÄÀÏ ³×ÀÓ effname = m_LandscapeEffectValue.m_EffName; CString strFilter = GEMFILE; CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this); filedia.m_ofn.lpstrInitialDir=OBJECTGEMPATH; filedia.DoModal(); filename=filedia.GetFileName(); if(!filename.IsEmpty()) { if(MessageBox("À̺¥Æ® Æ÷Áö¼ÇÀ» ¼³Á¤ÇϽðڽÀ´Ï±î?","Mesh Event",MB_YESNO) == IDYES) { switchrange = true; } av->m_SceneManager->m_MapStorage.AddLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod+1,dwBlend,Param,iParam,filename.LockBuffer(),effname.LockBuffer()); } pSector->GenerateLandscapeEffect(); } else { //À̺¥Æ® Æ÷Áö¼Ç Ãß°¡ ¸ðµå switchrange = false; m_Sphere.SetPosition(vecPos.x,vecPos.y,vecPos.z); m_Sphere.SetTransparency(40); m_Sphere.SetColor(1.0f,0.0f,0.0f); m_Sphere.SetRadius(m_LandscapeEffectValue.m_switchRad); m_Sphere.Create(m_SceneManager->GetDevice(), 10, 20 ); } } else if(nEffectMethod == 3) { // wave if(m_LandscapeEffectValue.m_WaveCreate) { //m_LandscapeEffectValue.m_WaveCreate = false; memset(iParam,0,sizeof(int) * 20); memset(Param,0,sizeof(float) * 50); iParam[0] = m_LandscapeEffectValue.m_Fix; iParam[1] = m_LandscapeEffectValue.m_DownLayerNum; iParam[2] = m_LandscapeEffectValue.m_UpLayerNum; iParam[3] = m_WaveP.num; for(int k=0;km_fPosX; Param[(k*3) +1] = m_WaveP[k]->m_fPosY; Param[(k*3) +2] = m_WaveP[k]->m_fPosZ; } av->m_SceneManager->m_MapStorage.AddLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod+1,dwBlend,Param,iParam,"Wave","Wave2"); pSector->GenerateLandscapeEffect(); for(k=m_WaveP.num-1;k>=0;k--) { delete m_WaveP[k]; m_WaveP.DelIndex(k); } } else { // Á¡ Ãß°¡ int pointnum = ((m_WaveP.num) * 3); if(pointnum <= 50) { Param[pointnum] = vecPos.x; Param[pointnum + 1] = m_LandscapeEffectValue.m_WaveHigh; Param[pointnum + 2] = vecPos.z; CSphere *tmp; tmp = new CSphere; tmp->SetPosition(vecPos.x,m_LandscapeEffectValue.m_WaveHigh,vecPos.z); tmp->SetTransparency(40); tmp->SetColor(1.0f,0.0f,0.0f); tmp->SetRadius(80.0f); tmp->Create(m_SceneManager->GetDevice(), 10, 20 ); m_WaveP.Add(tmp); } else { MessageBox("ÇѰèÁ¡ 16°³¸¦ ÀÌ¹Ì Âï¾ú½À´Ï´Ù."); } } } else if(nEffectMethod == 4) { // water space memset(iParam,0,sizeof(int) * 20); memset(Param,0,sizeof(float) * 50); Param[0] = m_LandscapeEffectValue.m_WaterWHeight; Param[1] = m_LandscapeEffectValue.m_WaterWChop; Param[2] = m_LandscapeEffectValue.m_WaterWQuadSize; iParam[0] = m_LandscapeEffectValue.m_WaterWidth; iParam[1] = m_LandscapeEffectValue.m_WaterHeight; iParam[2] = m_LandscapeEffectValue.m_Fix; av->m_SceneManager->m_MapStorage.AddLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod+1,dwBlend,Param,iParam,"Water","Water2"); pSector->GenerateLandscapeEffect(); } } else { float Param[50]; int iParam[20]; CString filename; //m_PickLandscape set av->m_SceneManager->PickLandscapeEffect(vecPos.x,vecPos.y,vecPos.z,nEffectMethod); if(nEffectMethod == 0) { Param[0] = m_LandscapeEffectValue.m_A1; Param[1] = m_LandscapeEffectValue.m_A2; Param[2] = m_LandscapeEffectValue.m_A3; Param[3] = m_LandscapeEffectValue.m_A4; Param[4] = m_LandscapeEffectValue.m_R1; Param[5] = m_LandscapeEffectValue.m_R2; Param[6] = m_LandscapeEffectValue.m_R3; Param[7] = m_LandscapeEffectValue.m_R4; Param[8] = m_LandscapeEffectValue.m_G1; Param[9] = m_LandscapeEffectValue.m_G2; Param[10] = m_LandscapeEffectValue.m_G3; Param[11] = m_LandscapeEffectValue.m_G4; Param[12] = m_LandscapeEffectValue.m_B1; Param[13] = m_LandscapeEffectValue.m_B2; Param[14] = m_LandscapeEffectValue.m_B3; Param[15] = m_LandscapeEffectValue.m_B4; Param[16] = (float)m_LandscapeEffectValue.m_Center; Param[17] = m_LandscapeEffectValue.m_FadeIn; Param[18] = m_LandscapeEffectValue.m_FadeInSpeed; Param[19] = m_LandscapeEffectValue.m_FadeOut; Param[20] = m_LandscapeEffectValue.m_Gx; Param[21] = m_LandscapeEffectValue.m_Gy; Param[22] = m_LandscapeEffectValue.m_Gz; Param[23] = m_LandscapeEffectValue.m_ImX; Param[24] = m_LandscapeEffectValue.m_ImY; Param[25] = m_LandscapeEffectValue.m_ImZ; Param[26] = m_LandscapeEffectValue.m_Rad; Param[27] = m_LandscapeEffectValue.m_Size; iParam[0] = m_LandscapeEffectValue.m_Num; iParam[1] = m_LandscapeEffectValue.m_Fix; } else if(nEffectMethod == 1) {//boid iParam[0] = m_LandscapeEffectValue.m_BoidNum; iParam[1] = m_LandscapeEffectValue.m_Fix; iParam[2] = m_LandscapeEffectValue.m_BoidAct; iParam[3] = m_LandscapeEffectValue.m_BoidKind; Param[0] = m_LandscapeEffectValue.m_BoidRange; Param[1] = m_LandscapeEffectValue.m_BoidSpeed; Param[2] = m_LandscapeEffectValue.m_BoidRange2; Param[3] = m_LandscapeEffectValue.m_BoidRange3; Param[4] = m_LandscapeEffectValue.m_BoidVot; } else if(nEffectMethod == 2) { // mesh morph iParam[0] = m_LandscapeEffectValue.m_loop; iParam[1] = m_LandscapeEffectValue.m_switch; iParam[2] = m_LandscapeEffectValue.m_Fix; iParam[3] = m_LandscapeEffectValue.m_RandAni; effname = m_LandscapeEffectValue.m_EffName; Param[0] = m_LandscapeEffectValue.m_switchRad; Param[1] = m_LandscapeEffectValue.m_Vot; Param[2] = m_LandscapeEffectValue.m_RandMax; Param[3] = m_LandscapeEffectValue.m_RandMin; } // ¼öÁ¤ ¸ðµå if(av->m_SceneManager->m_PickLandscape != NULL) { for(int j = 0;jm_SceneManager->m_PickLandscape->m_LandscapeEffect.num;j++) { if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_nEffectMethod == 1) { if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam[1] == 1) { memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param,Param,sizeof(float)*50); memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam,iParam,sizeof(int)*20); } } else if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_nEffectMethod == 2) { if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam[1] == 1) { memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param,Param,sizeof(float)*50); memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam,iParam,sizeof(int)*20); strncpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Name,m_LandscapeEffectValue.m_BoidName.LockBuffer(),sizeof(char) * 49); } } else if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_nEffectMethod == 3) { if(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam[2] == 1) { Param[4] = av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param[4]; Param[5] = av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param[5]; Param[6] = av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param[6]; memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_Param,Param,sizeof(float)*50); memcpy(av->m_SceneManager->m_PickLandscape->m_LandscapeEffect[j].m_IntParam,iParam,sizeof(int)*20); } } } } pSector->GenerateLandscapeEffect(); } ////////////// } } /* if(m_MouseInterface==2) { // Add Light to Scene Data; try { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageLightContainer.AddLight(xp,yp,zp); } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==3) { // Add Object to Scene Data; try { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.AddObject(xp,yp,zp); if(m_SceneManager->m_PickHouseScene==NULL) { for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateObject(); } } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==10) { // Add to MapStorage ,WideTexture try { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); m_MouseInterface=-1; CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageWideContainer.AddWideTexture(xp,yp,zp); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateWideMap(); } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==20) { m_SceneManager->m_bIsPickObjectMoving=MOVE_NOTHING; //m_SceneManager->MakeUndoData(); } if(m_MouseInterface==30) { //Adder water to map try { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; mf->m_dlgMakeWater->UpdateData(); if(mf->m_dlgMakeWater->m_bWaterRelection) { CMapStorage::AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), true); } else { CMapStorage::AddWaterMap(xp,yp,zp,mf->m_dlgMakeWater->m_fWaterHeight, mf->m_dlgMakeWater->m_fWaterSizeX, mf->m_dlgMakeWater->m_fWaterSizeY, mf->m_dlgMakeWater->m_fWaterPosX, mf->m_dlgMakeWater->m_fWaterPosY, color(GetRValue(mf->m_dlgMakeWater->m_cWaterColor), GetGValue(mf->m_dlgMakeWater->m_cWaterColor), GetBValue(mf->m_dlgMakeWater->m_cWaterColor), mf->m_dlgMakeWater->m_AlphaWater), false); } //(bool)mf->m_dlgMakeWater->m_bWaterRelection); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateWater(); } } catch(CError& e) { AfxMessageBox(e.GetErrorMsg()); } } if(m_MouseInterface==40) { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CMapStorage::AddFallMap(xp,yp,zp,mf->m_dlgMakeFall->m_fFallPosX, mf->m_dlgMakeFall->m_fFallPosY, mf->m_dlgMakeFall->m_fFallRot, mf->m_dlgMakeFall->m_FallHeightList, mf->m_dlgMakeFall->m_FallLeftList, mf->m_dlgMakeFall->m_FallRightList, mf->m_dlgMakeFall->m_FallAddXList, mf->m_dlgMakeFall->m_FallColorList); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].GenerateFall(); } } if(m_MouseInterface==50) { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; long TreeKind=mf->m_dlgMakePlant->m_TreeList.GetCurSel(); CMapStorage::AddPlantMap(xp,yp,zp,TreeKind); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= xp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > xp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= zp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > zp) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GeneratePlant(); } } } if(m_MouseInterface==51) { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); //CMapStorage::AddPlantMap(xp,yp,zp,0); CMapStorage::DelPlantMap(xp,yp,zp); for(int cSector=0;cSectorm_HeightField.m_SectorScene[cSector].m_AccumulateTM._41 <= xp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._41+SECTORSIZE > xp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43 <= zp && m_SceneManager->m_HeightField.m_SectorScene[cSector].m_AccumulateTM._43+SECTORSIZE > zp) { m_SceneManager->m_HeightField.m_SectorScene[cSector].GeneratePlant(); } } } */ CView::OnLButtonUp(nFlags, point); } void CWorldCreatorView::OnMouseMove(UINT nFlags, CPoint point) { static int before_target = -1; // TODO: Add your message handler code here and/or call default { m_MouseMove=m_MousePos-point; m_MousePos=point; } if(m_MousePushLeft == TRUE) { m_pickmove = m_PickPos - point; m_PickPos = point; } if(m_isShowEditTerrain) { //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); //m_dlgEditTerrain->m_fSelectedHeigth=yp; //m_dlgEditTerrain->UpdateData(FALSE); m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); if(m_dlgEditTerrain->m_SelectSectorScene && m_MousePushLeft && m_dlgEditTerrain->m_isSmallSmooth==FALSE) { //m_dlgEditTerrain->MouseEdit(xp,yp,zp); m_dlgEditTerrain->MouseEdit(m_SceneManager->m_vecPickRayStart,m_SceneManager->m_vecPickRayDir); } } CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; /* if(mf->m_PickMode == 7) { if(KeyPressed(VK_CONTROL) && m_MousePushLeft ==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); //Pos.y *=0.05f; Pos.y = (m_pickmove.y); m_SceneManager->PickEffectMove(Pos.x,Pos.y,Pos.z,0.0,Pos.y,1); } else if(m_MousePushLeft ==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); m_SceneManager->PickEffectMove(Pos.x,Pos.y,Pos.z,0.0f,0.0f,0); } }*/ // landeffect move if(m_MouseInterface >=100) { if(KeyPressed(VK_CONTROL) && m_MousePushLeft ==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); //Pos.y *=0.05f; Pos.y = (m_pickmove.y*10.0f); m_SceneManager->PickLandscapeEffectMove(Pos.x,Pos.y,Pos.z,0.0,Pos.y,1); } else if(KeyPressed('Z') && m_MousePushLeft == TRUE) { // x axis rot m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); Pos.y = (m_pickmove.y*4.0f); m_SceneManager->PickLandscapeEffectMove(Pos.x,Pos.y,Pos.z,Pos.y,0.0f,2); } else if(KeyPressed('X') && m_MousePushLeft == TRUE) { // x axis rot m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); Pos.y = (m_pickmove.y*4.0f); m_SceneManager->PickLandscapeEffectMove(Pos.x,Pos.y,Pos.z,Pos.y,0.0f,3); } else if(KeyPressed('C') && m_MousePushLeft == TRUE) { // x axis rot m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); Pos.y = (m_pickmove.y*4.0f); m_SceneManager->PickLandscapeEffectMove(Pos.x,Pos.y,Pos.z,Pos.y,0.0f,4); } else if(m_MousePushLeft ==TRUE) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); m_SceneManager->PickLandscapeEffectMove(Pos.x,Pos.y,Pos.z,0.0f,0.0f,0); } } //effect move /* if(m_MouseInterface == 70 && m_SceneManager->m_bPickEffect && m_MousePushLeft == TRUE) { /* char *buf = m_Select_Effect.LockBuffer(); m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,buf); */ /* m_SceneManager->PickMakeRay(m_MousePos.x,m_MousePos.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); vector3 *pickeffect = m_SceneManager->m_PickEffect->GetCenter(); if(mf->m_PickMode == 7) { for(int i=0;im_EffectNum;i++) { CX3DEffect *PickEffect = m_SceneManager->m_EffectManager.m_lstEffect[i]; vector3 *target = PickEffect->GetCenter(); if(target->x == pickeffect->x && target->z == pickeffect->z && target->y == pickeffect->y) { m_SceneManager->m_MapStorage.DelEffectMap(target->x,target->y,target->z,NULL); if(KeyPressed(VK_SHIFT)) { if(before_target != i) { before_target = i; } else { continue; } } vecPos.y = target->y; if(KeyPressed(VK_CONTROL)) { vecPos.x = target->x; vecPos.z = target->z; vecPos.y = target->y + (m_pickmove.y*10.0f); } int indexx=(int)(vecPos.x/SECTORSIZE); int indexy=(int)(vecPos.z/SECTORSIZE); PickEffect->m_SectorX = indexx; PickEffect->m_SectorY = indexy; PickEffect->SetCenter(vecPos.x,vecPos.y,vecPos.z); char *buf = m_Select_Effect.LockBuffer(); m_SceneManager->m_MapStorage.AddEffectMap(vecPos.x,vecPos.y,vecPos.z,buf); //m_SceneManager-> //m_SceneManager->m_EffectManager.m_lstEffect[i] = PickEffect; break; } // target init before_target = -1; } } }*/ if(m_MouseInterface==20 && m_MousePushLeft==TRUE) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if(mf->m_NotMove==1) return; if(mf->m_PickMode==2) { if( m_SceneManager->m_PickLightScene==NULL && m_SceneManager->m_PickObjectScene==NULL) return; } if(KeyPressed(VK_SHIFT)) { m_SceneManager->PickObjectMove(0.0f,0.0f,0.0f,(float)m_MouseMove.x/100.0f,0.0f,1); } else { if(KeyPressed(VK_CONTROL)) { m_SceneManager->PickObjectMove(0.0f,0.0f,0.0f,0.0f,(float)m_MouseMove.y,2); } else { if(KeyPressed(VK_MENU)) { m_SceneManager->PickObjectMove(0.0f,0.0f,0.0f,0.0f,0.0f,3); } else { m_SceneManager->PickMakeRay(point.x,point.y, m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); m_SceneManager->PickObjectMove(vecPos.x,vecPos.y,vecPos.z,0.0f,0.0f); //float xp,yp,zp; //m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); //m_SceneManager->PickObjectMove(xp,yp,zp,0.0f,0.0f); } } } } if(m_nCameraViewMode==0) { if(m_MousePushRight==TRUE) { CameraMouseMove(m_MouseMove.x,m_MouseMove.y); } else { CameraMouseMove(0,0); } } else { //CameraMouseMove(0,0); if(m_MousePushRight==TRUE) { CameraMouseMove(-m_MouseMove.x,m_MouseMove.y); } else { CameraMouseMove(0,0); } } CView::OnMouseMove(nFlags, point); } void CWorldCreatorView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default /* if(m_MouseInterface==20) { m_MouseInterface=-1; m_SceneManager->m_PickHouseScene=NULL; } */ m_MousePos=point; m_MousePushRight=TRUE; CRect ScreenRect; ::GetClientRect( GetSafeHwnd(),&ScreenRect ); ::ClientToScreen( GetSafeHwnd(),(POINT*)&ScreenRect.left ); ::ClientToScreen( GetSafeHwnd(),(POINT*)&ScreenRect.right ); ClipCursor(ScreenRect); CView::OnRButtonDown(nFlags, point); } void CWorldCreatorView::OnRButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ClipCursor(NULL); m_MousePushRight=FALSE; if(m_MouseInterface==1)//House on to Map { float xp,yp,zp; m_BaseGraphicLayer.GetPickPoint(point.x,point.y,xp,yp,zp); } if(m_MouseInterface >=100) { int nEffectMethod=m_MouseInterface-100; m_SceneManager->PickMakeRay(point.x, point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 vecPos=m_SceneManager->PickPointTerrain(); CSectorScene *pSector=m_SceneManager->PickTerrain(); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); CSectorLandscapeEffectMap *find_effect; find_effect = av->m_SceneManager->m_MapStorage.FindLandscapeEffect(vecPos.x,vecPos.z); if(find_effect != NULL) { for(int i = 0;im_LandscapeEffect.num;i++) { if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 3) { //mesh ani if(find_effect->m_LandscapeEffect[i].m_IntParam[2] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[2] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 2) { //boid if(find_effect->m_LandscapeEffect[i].m_IntParam[1] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[1] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 1) { //fog if(find_effect->m_LandscapeEffect[i].m_IntParam[1] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[1] = 0; pSector->GenerateLandscapeEffect(); return; } } else if(find_effect->m_LandscapeEffect[i].m_nEffectMethod == 4) { // wave if(find_effect->m_LandscapeEffect[i].m_IntParam[0] == 1) { find_effect->m_LandscapeEffect[i].m_IntParam[0] = 0; pSector->GenerateLandscapeEffect(); return; } } } } } m_SceneManager->m_PickLightScene=NULL; CView::OnRButtonUp(nFlags, point); } void ConformTriggerPointDelete() { CBGMController & BGMC = CBGMController::GetInstance(); //BGMÄÁÆ®·Ñ·¯¿¡¼­ Áö¿î °ÍÀÌ ÀÖ´Ù¸é PageTriggerContainer¿¡¼­µµ Áö¿öÁÜ unsigned ptDeleted = BGMC.LastDeletedPoint(); if( ptDeleted != UINT_MAX ) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CPageTriggerContainer & p = mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageTriggerContainer; p.DeleteNode( ptDeleted ); } } BOOL CWorldCreatorView::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class switch(pMsg->message) { case WM_PAINT: break; case WM_MOVE: break; case WM_SIZE: break; case WM_GETMINMAXINFO: break; case WM_SETCURSOR: break; case WM_DESTROY: break; case WM_KEYDOWN: if(pMsg->wParam==VK_DELETE) // Minotaurs Áö¿ì±â { m_SceneManager->DeletePickingObject(); m_SceneManager->DeletePickingLandscapeEffect(); m_SceneManager->DeletePickEffect(); ConformTriggerPointDelete(); } if(pMsg->wParam=='Z'&& KeyPressed(VK_CONTROL)) { m_SceneManager->Undo(); } return 0L; case 0x020A: case WM_MBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_LBUTTONDBLCLK: case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDBLCLK: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MOUSEMOVE: //g_DeviceInput.GetMouseState(uMsg, wParam, lParam); /* if(m_nCameraViewMode==1) { g_DeviceInput.UpdateInfo(); g_DeviceInput.GetMouseState(pMsg->message, pMsg->wParam, pMsg->lParam); return 0; } */ break; } return CView::PreTranslateMessage(pMsg); } void CWorldCreatorView::ChangeMouseInterface(int MouseInterface) { m_MouseInterface=MouseInterface; } void CWorldCreatorView::OnDestroy() { CView::OnDestroy(); DeleteAllData(); // TODO: Add your message handler code here } void CWorldCreatorView::DeleteAllData() { delete m_SceneManager; m_dlgEditTerrain->DestroyWindow(); delete m_dlgEditTerrain; CZ3DManagedObject::Close(); CZ3DGeneralChrModel::_ClearCMDSList(); CZ3DChrEventGenerator::_Close(); } void CWorldCreatorView::ReArrangeDlg(int dlgMode,BOOL isShow) { CRect ViewRect; GetWindowRect(ViewRect); if(dlgMode==0) { if(isShow) { m_dlgEditTerrain->MoveWindow(ViewRect.left,ViewRect.bottom-120,ViewRect.Width()-3,120,TRUE); m_dlgEditTerrain->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); m_dlgEditTerrain->ShowWindow(SW_SHOW); m_isShowEditTerrain=TRUE; m_bEditTerrain = true; } else { m_bEditTerrain = false; m_dlgEditTerrain->ShowWindow(SW_HIDE); m_isShowEditTerrain=FALSE; if(m_dlgEditTerrain->m_SelectSectorScene) { m_dlgEditTerrain->m_SelectSectorScene->m_isEdit=false; m_dlgEditTerrain->m_SelectSectorScene=NULL; m_dlgEditTerrain->m_SelectNeighborScene[0]= m_dlgEditTerrain->m_SelectNeighborScene[1]= m_dlgEditTerrain->m_SelectNeighborScene[2]= m_dlgEditTerrain->m_SelectNeighborScene[3]= m_dlgEditTerrain->m_SelectNeighborScene[4]= m_dlgEditTerrain->m_SelectNeighborScene[5]= m_dlgEditTerrain->m_SelectNeighborScene[6]= m_dlgEditTerrain->m_SelectNeighborScene[7]=NULL; } m_SceneManager->m_HeightField.CheckingNextTerrain(); m_SceneManager->m_HeightField.CheckingTessellate(); m_SceneManager->m_isTessellate=1; } } } void CWorldCreatorView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default //HIMC hIMC=ImmAssociateContext(GetSafeHwnd(), NULL); ///m_Font.AddKey(nChar); CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); CButton *forIsShow = NULL; BOOL isShow; switch(nChar) { case 219: //'[' m_SceneManager->PickNextObject(0,mf->m_PickMode); break; case 221: //']' m_SceneManager->PickNextObject(1,mf->m_PickMode); break; case VK_CONTROL: m_bCtrl = false; break; case VK_SPACE: if(m_nCameraViewMode == 0) { forIsShow=(CButton*)mf->m_wndSceneEditBar.GetDlgItem(IDC_CHECK_EDITTERRAIN); isShow=forIsShow->GetCheck(); forIsShow->SetCheck(!isShow); mf->OnCheckEditterrain(); } break; case '1': if(av->m_MouseInterface == -1) { if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.m_bAddHouse = TRUE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.UpdateData(FALSE); mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.SelectHouseObject(); av->m_MouseInterface = 1; } } else { av->m_MouseInterface = -1; if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.m_bAddHouse = FALSE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.UpdateData(FALSE); } } break; case '2': if(av->m_MouseInterface == -1) { if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.m_bAddObj = TRUE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.UpdateData(FALSE); mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.SelectObject(); av->m_MouseInterface = 3; } } else { av->m_MouseInterface = -1; if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.m_bAddObj = FALSE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.UpdateData(FALSE); } } break; case '3': // house pick button mf->m_PickMode = -1; mf->UnPickButton(); mf->OnCheckPickhouse(); break; case '4': // object pick button mf->m_PickMode = -1; mf->UnPickButton(); mf->OnCheckPickobect(); break; } CView::OnKeyUp(nChar, nRepCnt, nFlags); } void CWorldCreatorView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if( nChar == 'M' && m_bEditTerrain) // 'M' { m_dlgEditTerrain->m_isAddHeight = !m_dlgEditTerrain->m_isAddHeight; m_dlgEditTerrain->m_isSubHeight = !m_dlgEditTerrain->m_isSubHeight; m_dlgEditTerrain->UpdateData(FALSE); } if( nChar == 0xbc && m_bEditTerrain) // '<' 0xbc { m_dlgEditTerrain->m_isAdd2 = !m_dlgEditTerrain->m_isAdd2; m_dlgEditTerrain->m_isAdd1 = !m_dlgEditTerrain->m_isAdd1; m_dlgEditTerrain->UpdateData(FALSE); if(m_dlgEditTerrain->m_isAdd1) m_dlgEditTerrain->OnCheckAddheightvalue1(); if(m_dlgEditTerrain->m_isAdd2) m_dlgEditTerrain->OnCheckAddheightvalue2(); } if( nChar == 0xbf && m_bEditTerrain) // '?' 0xbf { m_dlgEditTerrain->m_isSmallSmooth = !m_dlgEditTerrain->m_isSmallSmooth; m_dlgEditTerrain->UpdateData(FALSE); if(m_dlgEditTerrain->m_isSmallSmooth) m_dlgEditTerrain->OnCheckSmallsmooth(); } if( nChar == 0xbe && m_bEditTerrain) // '>' 0xbe { int iNum = 0; if(m_dlgEditTerrain->m_isRange1) iNum = 0; else if(m_dlgEditTerrain->m_isRange2) iNum = 1; else if(m_dlgEditTerrain->m_isRange3) iNum = 2; else if(m_dlgEditTerrain->m_isRange4) iNum = 3; else if(m_dlgEditTerrain->m_isRange5) iNum = 4; else if(m_dlgEditTerrain->m_isRange6) iNum = 5; else iNum = -1; if(iNum == 0) { m_dlgEditTerrain->m_isRange2 = TRUE; m_dlgEditTerrain->m_isRange1 = FALSE; m_dlgEditTerrain->m_isRange3 = FALSE; m_dlgEditTerrain->m_isRange4 = FALSE; m_dlgEditTerrain->m_isRange5 = FALSE; m_dlgEditTerrain->m_isRange6 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange2(); } else if(iNum == 1) { m_dlgEditTerrain->m_isRange3 = TRUE; m_dlgEditTerrain->m_isRange1 = FALSE; m_dlgEditTerrain->m_isRange2 = FALSE; m_dlgEditTerrain->m_isRange4 = FALSE; m_dlgEditTerrain->m_isRange5 = FALSE; m_dlgEditTerrain->m_isRange6 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange3(); } else if(iNum == 2) { m_dlgEditTerrain->m_isRange4 = TRUE; m_dlgEditTerrain->m_isRange1 = FALSE; m_dlgEditTerrain->m_isRange2 = FALSE; m_dlgEditTerrain->m_isRange3 = FALSE; m_dlgEditTerrain->m_isRange5 = FALSE; m_dlgEditTerrain->m_isRange6 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange4(); } else if(iNum == 3) { m_dlgEditTerrain->m_isRange5 = TRUE; m_dlgEditTerrain->m_isRange1 = FALSE; m_dlgEditTerrain->m_isRange2 = FALSE; m_dlgEditTerrain->m_isRange4 = FALSE; m_dlgEditTerrain->m_isRange3 = FALSE; m_dlgEditTerrain->m_isRange6 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange5(); } else if(iNum == 4) { m_dlgEditTerrain->m_isRange6 = TRUE; m_dlgEditTerrain->m_isRange1 = FALSE; m_dlgEditTerrain->m_isRange2 = FALSE; m_dlgEditTerrain->m_isRange4 = FALSE; m_dlgEditTerrain->m_isRange3 = FALSE; m_dlgEditTerrain->m_isRange5 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange6(); } else if(iNum == 5) { m_dlgEditTerrain->m_isRange1 = TRUE; m_dlgEditTerrain->m_isRange5 = FALSE; m_dlgEditTerrain->m_isRange2 = FALSE; m_dlgEditTerrain->m_isRange4 = FALSE; m_dlgEditTerrain->m_isRange3 = FALSE; m_dlgEditTerrain->m_isRange6 = FALSE; m_dlgEditTerrain->UpdateData(FALSE); m_dlgEditTerrain->OnCheckEditrange1(); } } if( nChar == 'V' ) m_bAmbSphereShow = !m_bAmbSphereShow; if( m_SceneManager->m_PickObjectScene ) { if( strcmp( m_SceneManager->m_PickObjectScene->m_strObjectName, "Sound.R3S" ) == 0 ) { CSectorSoundMap & sndMap = CSectorSoundMap::GetInstance(); vector3 loc = m_SceneManager->m_PickObjectScene->m_TM.GetLoc(); SAmbience * pAmb = sndMap.GetAmbience( loc.x, loc.y, loc.z ); if( pAmb != NULL ) { switch( nChar ) { case VK_ADD : pAmb->m_fMaxDistance += 20.0f; break; case VK_SUBTRACT : pAmb->m_fMaxDistance -= 20.0f; break; case VK_DIVIDE : pAmb->m_fMinDistance -= 20.0f; break; case VK_MULTIPLY : pAmb->m_fMinDistance += 20.0f; break; } if( pAmb->m_fMinDistance > pAmb->m_fMaxDistance ) pAmb->m_fMaxDistance = pAmb->m_fMinDistance + 10.0f; } } } /* if(m_MouseInterface == 70) { switch(nChar) { case VK_DELETE: //m_SceneManager->m_PickEffect break; } }*/ CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; switch(nChar) { case VK_CONTROL: m_bCtrl = true; break; case VK_ESCAPE: CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); mf->m_PickMode = -1; av->m_SceneManager->UnPicking(); mf->UnPickButton(); av->m_MouseInterface = -1; if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.m_bAddHouse = FALSE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageHouseContainer.UpdateData(FALSE); } if(mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer) { mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.m_bAddObj = FALSE; mf->m_MeshContainerBar.m_MeshContainerSheet->m_PageObjectContainer.UpdateData(FALSE); } break; } if(mf->m_PickMode == 7) { float up = 5.0f; if(KeyPressed(VK_CONTROL)) { up +=5.0f; } if(KeyPressed(VK_DELETE) || KeyPressed(VK_INSERT)) { // m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); // vector3 Pos=m_SceneManager->PickPointTerrain(); //Pos.y *=0.05f; // Pos.y = (m_pickmove.y); if(m_SceneManager->m_PickEffect) { //m_SceneManager->m_PickEffect->m_vecEffectPos[m_SceneManager->m_PickEffect->pick_index].y; m_SceneManager->PickEffectMove(0.0f,0.0f,0.0f,0.0,30.0f,1); } } else if(KeyPressed('B')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(up,0.0f,0.0f,0); } } else if(KeyPressed('N')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(0.0f,up,0.0f,1); } } else if(KeyPressed('M')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(0.0f,0.0f,up,2); } } else if(KeyPressed('G')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(-up,0.0f,0.0f,0); } } else if(KeyPressed('H')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(0.0f,-up,0.0f,1); } } else if(KeyPressed('J')) { if(m_SceneManager->m_PickEffect) { m_SceneManager->PickEffectRot(0.0f,0.0f,-up,2); } } switch(nChar) { case VK_ESCAPE: CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); av->m_SceneManager->UnPickEffect(); break; ////////////// /* if(KeyPressed(VK_LEFT) || KeyPressed(VK_RIGHT)) { m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); //Pos.y *=0.05f; Pos.y = (m_pickmove.y); m_SceneManager->PickEffectMove(Pos.x,Pos.y,Pos.z,0.0,Pos.y,1); }*/ /* m_SceneManager->PickMakeRay(point.x,point.y,m_BaseGraphicLayer.m_lScreenSx,m_BaseGraphicLayer.m_lScreenSy); vector3 Pos=m_SceneManager->PickPointTerrain(); m_SceneManager->PickEffectMove(Pos.x,Pos.y,Pos.z,0.0f,0.0f,0); */ ///////////////// break; } } CView::OnKeyDown(nChar, nRepCnt, nFlags); } void CWorldCreatorView::CameraMouseMove(int dx, int dy) { if(m_nCameraViewMode==0) { D3DXMATRIX *matPosition=(D3DXMATRIX*)CSceneManager::GetCamera()->GetMatPosition(); float fDeltaY=dx/300.0f; float fDeltaX=dy/300.0f; D3DXVECTOR3 vecT(0.0f, 0.0f, 0.0f); D3DXVECTOR3 vecR(0.0f, 0.0f, 0.0f); D3DXMATRIX matT, matR; D3DXQUATERNION qR; if(KeyPressed(VK_MENU)) return; if(KeyPressed(VK_SHIFT)) { if(KeyPressed('A') || KeyPressed(VK_LEFT)) vecT.x -= 341.0f; // Slide Left if(KeyPressed('D') || KeyPressed(VK_RIGHT)) vecT.x += 341.0f; // Slide Right if(KeyPressed(VK_DOWN)) vecT.y += 341.0f; // Slide Down if(KeyPressed(VK_UP)) vecT.y -= 341.0f; // Slide Up if(KeyPressed('W')) vecT.z += 341.0f; // Move Forward if(KeyPressed('S')) vecT.z -= 341.0f; // Move Backward if(KeyPressed(VK_NUMPAD4)) fDeltaY+=0.008f; if(KeyPressed(VK_NUMPAD6)) fDeltaY-=0.008f; if(KeyPressed(VK_NUMPAD8)) fDeltaX-=0.008f; if(KeyPressed(VK_NUMPAD2)) fDeltaX+=0.008f; } else { if(KeyPressed('A') || KeyPressed(VK_LEFT) ) vecT.x -= 10.0f; // Slide Left if(KeyPressed('D') || KeyPressed(VK_RIGHT)) vecT.x += 10.0f; // Slide Right if(KeyPressed(VK_DOWN)) vecT.y += 10.0f; // Slide Down if(KeyPressed(VK_UP)) vecT.y -= 10.0f; // Slide Up if(KeyPressed('W')) vecT.z += 10.0f; // Move Forward if(KeyPressed('S')) vecT.z -= 10.0f; // Move Backward if(KeyPressed(VK_NUMPAD4)) fDeltaY+=0.008f; if(KeyPressed(VK_NUMPAD6)) fDeltaY-=0.008f; if(KeyPressed(VK_NUMPAD8)) fDeltaX-=0.008f; if(KeyPressed(VK_NUMPAD2)) fDeltaX+=0.008f; } //////////effect pick °æ¿ì CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if((mf->m_PickMode == 7) || (m_SceneManager->m_pPickSectorLight != NULL)) { if(KeyPressed(VK_LEFT)) vecT.x +=10.0f; else if(KeyPressed(VK_RIGHT)) vecT.x -=10.0f; else if(KeyPressed(VK_UP)) vecT.y +=10.0f; else if(KeyPressed(VK_DOWN)) vecT.y -=10.0f; } ///////////////////////////////////////////////////// D3DXMatrixTranslation(&matT, vecT.x, vecT.y, vecT.z); D3DXMatrixMultiply(matPosition, &matT, matPosition); float fRotationX=CSceneManager::GetCamera()->GetRotationX(); float fRotationY=CSceneManager::GetCamera()->GetRotationY(); D3DXQuaternionRotationYawPitchRoll(&qR, 0.0f,-fRotationX ,0.0f); D3DXMatrixRotationQuaternion(&matR, &qR); D3DXMatrixMultiply(matPosition, &matR, matPosition); fRotationX-=fDeltaX; fRotationY-=fDeltaY; D3DXQuaternionRotationYawPitchRoll(&qR,-fDeltaY,fRotationX, 0.0f); D3DXMatrixRotationQuaternion(&matR, &qR); D3DXMatrixMultiply(matPosition, &matR, matPosition); CSceneManager::GetCamera()->SetRotaitionX(fRotationX); CSceneManager::GetCamera()->SetRotaitionY(fRotationY); CSceneManager::GetCamera()->SetVecPosition(vector3(CSceneManager::GetCamera()->GetMatPosition()->_41, CSceneManager::GetCamera()->GetMatPosition()->_42, CSceneManager::GetCamera()->GetMatPosition()->_43)); matrix *matPos=CSceneManager::GetCamera()->GetMatPosition(); matrix matInv; matInv.Inverse(*matPos); CSceneManager::GetCamera()->SetMatView(matInv); if(KeyPressed(VK_SPACE)) { } else { CSceneManager::GetCamera()->MoveFrustum(); } } if(m_nCameraViewMode==1) { //m_ChrManager.UpdateSelfCharacter(dx,dy); m_ChrManager.UpdateSelfCharacter(TRUE,m_MousePos.x,m_MousePos.y); m_ChrManager.SetCamera(dx,dy); //m_SceneManager- } static bool bk = false; static bool bu = false; static bool bx = false; static bool bt = false; static bool by = false; static bool bi = false; static bool bFix = false; static bool bc = false; static bool bv = false; static bool bb = false; static bool bn = false; static bool bm = false; static float fFrame = 0.0f; if(KeyPressed('G')) { if(bk == false) { bk = true; if(g_CameraScript != NULL) { matrix *matPos= CSceneManager::GetCamera()->GetMatPosition(); vector3 vecCameraToward = CSceneManager::GetCamera()->GetViewTowardVector(); vector3 vecCameraUp = CSceneManager::GetCamera()->GetViewUpVector(); D3DXVECTOR3 vecCameraSPos = D3DXVECTOR3(matPos->_41,matPos->_42,matPos->_43); D3DXVECTOR3 vecCameraSLook = D3DXVECTOR3(vecCameraSPos.x + vecCameraToward.x * 50.0f,vecCameraSPos.y + vecCameraToward.y* 50.0f,vecCameraSPos.z + vecCameraToward.z* 50.0f); D3DXVECTOR3 vecCameraSUp = D3DXVECTOR3(vecCameraUp.x,vecCameraUp.y,vecCameraUp.z); if(bFix == false) { CDlgEditName DlgEdit; DlgEdit.m_fScale = fFrame; DlgEdit.DoModal(); if(MessageBox(" »õ·Î¿î Event ³ÖÀ¸½Ã°Ú½À´Ï±î?","Camera Event",MB_YESNO) == IDYES) { fFrame = DlgEdit.m_fScale; g_CameraScript->InsertEvent(vecCameraSPos,vecCameraSLook,vecCameraSUp,fFrame,0); } } else { CDlgEditName DlgEdit; int tmp; DlgEdit.m_FixEventNum = g_CameraScript->GetFixCount(tmp,DlgEdit.m_fScale); DlgEdit.UpdateData(FALSE); DlgEdit.DoModal(); if(MessageBox(" Event¸¦ ¼öÁ¤ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->FixEvent(DlgEdit.m_FixEventNum,vecCameraSPos,vecCameraSLook,vecCameraSUp,DlgEdit.m_fScale,0); } } } } } else { bk = false; } if(KeyPressed('L')) { if(bu == false) { bu = true; if(MessageBox(" Spline °è»êÀ» ÇϽðڽÀ´Ï±î??","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->CreateSpline(); } } } else { bu = false; } if(KeyPressed('H')) { if(bt == false) { bt = true; if(g_CameraScript->GetCameraEventCnt() > 0) { if(g_CameraScript->ISPlay()) g_CameraScript->SetPlay(false); else g_CameraScript->SetPlay(true,false,false); } } } else { bt = false; } if(KeyPressed('Y')) { if(by == false) { by = true; char strFileName[256] = {0}; CDlgEditName DlgEdit; DlgEdit.DoModal(); sprintf(strFileName,"c:\\%s",DlgEdit.m_EditName.LockBuffer()); DlgEdit.m_EditName.UnlockBuffer(); if(MessageBox("Save ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->SaveScript(strFileName); } } } else { by = false; } if(KeyPressed('U')) { if(bi == false) { bi = true; char strFileName[256] = {0}; CDlgEditName DlgEdit; DlgEdit.DoModal(); sprintf(strFileName,"%s",DlgEdit.m_EditName.LockBuffer()); DlgEdit.m_EditName.UnlockBuffer(); if(MessageBox(" Load ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->LoadScript(strFileName); } } } else { bi = false; } if(KeyPressed('F')) { if(bx == false) { bx = true; if(g_CameraScript != NULL) { matrix *matPos= CSceneManager::GetCamera()->GetMatPosition(); D3DXVECTOR3 vecCameraSPos = D3DXVECTOR3(matPos->_41,matPos->_42,matPos->_43); if(bFix == false) { if(MessageBox(" Look ³ÖÀ¸½Ã°Ú½À´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->InsertLookPos(vecCameraSPos); } } else { if(MessageBox(" Look ¼öÁ¤ ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { int tmp1;float tmp2; g_CameraScript->FixLook(g_CameraScript->GetFixCount(tmp1,tmp2),vecCameraSPos); } } } } } else { bx = false; } if(KeyPressed('C')) { if(bc == false) { bc = true; bFix = (bFix == true) ? false : true; if(bFix == true) { int tmp1;float tmp2; m_EditFixCameraEvent->m_FixEventNum = g_CameraScript->GetFixCount(tmp1,tmp2); m_EditFixCameraEvent->UpdateData(FALSE); m_EditFixCameraEvent->ShowWindow(SW_SHOW); m_EditFixCameraEvent->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } else { m_EditFixCameraEvent->ShowWindow(SW_HIDE); } } } else { bc = false; } if(KeyPressed('V')) { if(bv == false) { bv = true; g_CameraScript->ReWindFix(); int tmp1;float tmp2; m_EditFixCameraEvent->m_FixEventNum = g_CameraScript->GetFixCount(tmp1,tmp2); m_EditFixCameraEvent->UpdateData(FALSE); } } else { bv = false; } if(KeyPressed('B')) { if(bb == false) { bb = true; g_CameraScript->FoWindFix(); int tmp1;float tmp2; m_EditFixCameraEvent->m_FixEventNum = g_CameraScript->GetFixCount(tmp1,tmp2); m_EditFixCameraEvent->UpdateData(FALSE); } } else { bb = false; } if(KeyPressed('N')) { if(bn == false) { bn = true; if(MessageBox("CameraScript ÃʱâÈ­ ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->InitCameraScript(); } } } else { bn = false; } if(KeyPressed('M')) { if(bm == false) { int tmp1;float tmp2; bm = true; if(bFix == true) { if(MessageBox(" ÇöÀç ¼öÁ¤ÁßÀÎ Event¸¦ »èÁ¦ ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->DeleteEvent(g_CameraScript->GetFixCount(tmp1,tmp2)); } } } } else { bm = false; } if(KeyPressed('Y')) { if(by == false) { by = true; char strFileName[256] = {0}; CDlgEditName DlgEdit; DlgEdit.DoModal(); sprintf(strFileName,"c:\\%s",DlgEdit.m_EditName.LockBuffer()); DlgEdit.m_EditName.UnlockBuffer(); if(MessageBox("Save ÇϽðڽÀ´Ï±î?","Camera Event",MB_YESNO) == IDYES) { g_CameraScript->SaveScript(strFileName); } } } else { by = false; } g_CameraScript->PlayScript(0,0,0); } BOOL CWorldCreatorView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { // TODO: Add your message handler code here and/or call default if(m_nCameraViewMode==1) { if(m_ChrManager.m_Camera.m_nCameraMode==0) { m_ChrManager.m_Camera.m_fMouseClickInterCharacterCamera += zDelta*0.2f; if(m_ChrManager.m_Camera.m_fMouseClickInterCharacterCamera <=1.0f) m_ChrManager.m_Camera.m_fMouseClickInterCharacterCamera =1.0f; } else { m_ChrManager.m_Camera.m_fBattleInterCharacterCamera += zDelta*0.2f; if(m_ChrManager.m_Camera.m_fBattleInterCharacterCamera<=1.0f) m_ChrManager.m_Camera.m_fBattleInterCharacterCamera=1.0f; } } return CView::OnMouseWheel(nFlags, zDelta, pt); }