Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3379 lines
110 KiB
C++
3379 lines
110 KiB
C++
// 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 <AmbienceStruct.h>
|
||
#include <SectorSoundMap.h>
|
||
#include <BGMController.h>
|
||
#include <SoundManager.h>
|
||
#include <exception>
|
||
#include "CCameraScript.h"
|
||
#include "SceneStateMgr.h"
|
||
#include "EffectCasher.h"
|
||
|
||
|
||
|
||
#include "PageTriggerContainer.h"
|
||
|
||
using namespace std;
|
||
|
||
#include <imm.h>
|
||
#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;i<m_WaveP.num;i++) {
|
||
if(m_WaveP[i] != NULL) {
|
||
delete (CSphere *)m_WaveP[i];
|
||
}
|
||
}
|
||
delete m_EditFixCameraEvent;
|
||
m_EditFixCameraEvent = NULL;
|
||
|
||
}
|
||
|
||
BOOL CWorldCreatorView::PreCreateWindow(CREATESTRUCT& cs)
|
||
{
|
||
// TODO: Modify the Window class or styles here by modifying
|
||
// the CREATESTRUCT cs
|
||
|
||
return CView::PreCreateWindow(cs);
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CWorldCreatorView drawing
|
||
|
||
void CWorldCreatorView::OnDraw(CDC* pDC)
|
||
{
|
||
CWorldCreatorDoc* pDoc = GetDocument();
|
||
ASSERT_VALID(pDoc);
|
||
|
||
//Render();
|
||
//Invalidate(FALSE);
|
||
// TODO: add draw code for native data here
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CWorldCreatorView diagnostics
|
||
|
||
#ifdef _DEBUG
|
||
void CWorldCreatorView::AssertValid() const
|
||
{
|
||
CView::AssertValid();
|
||
}
|
||
|
||
void CWorldCreatorView::Dump(CDumpContext& dc) const
|
||
{
|
||
CView::Dump(dc);
|
||
}
|
||
|
||
CWorldCreatorDoc* CWorldCreatorView::GetDocument() // non-debug version is inline
|
||
{
|
||
ASSERT(m_pDocument->IsKindOf(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<61><70> <20>ʱ<EFBFBD>ȭ
|
||
// 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;scnt<snum;scnt++)
|
||
CSceneManager::m_EffectManager.ProcessInterfaceScript(scnt);
|
||
|
||
|
||
CBGMController & BGMC = CBGMController::GetInstance();
|
||
BGMC.Render( m_SceneManager->GetDevice() );
|
||
|
||
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;i<m_WaveP.num;i++) {
|
||
m_WaveP[i]->Render();
|
||
}
|
||
}
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateSectorLight();
|
||
}
|
||
|
||
bKeyPushed = true;
|
||
}
|
||
/* if(bKeyPushed == true) {
|
||
for(int cSector=0;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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 ó<><C3B3>
|
||
/* 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;i<check->num;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) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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 <20>̵<EFBFBD>
|
||
/*
|
||
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;i<m_SceneManager->m_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;ix<LSIZEX; ix++)
|
||
{
|
||
for(int iy=0;iy<LSIZEY;iy++)
|
||
{
|
||
NowSectorPx=(int)(m_SceneManager->m_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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{
|
||
//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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_HeightField.m_SectorScene[cSector].GenerateObject();
|
||
}*/
|
||
/* }
|
||
}
|
||
else
|
||
{
|
||
|
||
vector3 vecPos=m_SceneManager->m_vecPickRayStart+m_SceneManager->m_vecPickRayDir*400.0f;
|
||
|
||
if(m_bCtrl) // ī<><EFBFBD> <20>տ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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()%100<mf->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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 <20><>ŷ
|
||
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
||
|
||
//effect <20>߰<EFBFBD>
|
||
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 <20>߰<EFBFBD> ó<><C3B3>
|
||
/* 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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;i<find_effect->m_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) { // <20>Ϲ<EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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("<EFBFBD>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 { //<2F>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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;k<m_WaveP.num;k++) {
|
||
Param[k*3] = m_WaveP[k]->m_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 { // <20><> <20>߰<EFBFBD>
|
||
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("<EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD> 16<31><36><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");
|
||
}
|
||
}
|
||
}
|
||
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;
|
||
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if(av->m_SceneManager->m_PickLandscape != NULL) {
|
||
for(int j = 0;j<av->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;cSector<LSIZEX*LSIZEY;cSector++)
|
||
{
|
||
if( m_SceneManager->m_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;i<m_SceneManager->m_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;i<find_effect->m_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<47><4D>Ʈ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִٸ<D6B4> PageTriggerContainer<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{
|
||
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 <20><><EFBFBD><EFBFBD>
|
||
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(" <20><><EFBFBD>ο<EFBFBD> Event <20><><EFBFBD><EFBFBD><EFBFBD>ðڽ<C3B0><DABD>ϱ<EFBFBD>?","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<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>??","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 <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 <20><><EFBFBD><EFBFBD><EFBFBD>ðڽ<C3B0><DABD>ϱ<EFBFBD>?","Camera Event",MB_YESNO) == IDYES) {
|
||
g_CameraScript->InsertLookPos(vecCameraSPos);
|
||
}
|
||
}
|
||
else {
|
||
if(MessageBox(" Look <20><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 <20>ʱ<EFBFBD>ȭ <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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(" <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Event<6E><74> <20><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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 <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?","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);
|
||
}
|