Files
Client/GameTools/WORLDCREATOR/WorldCreatorView.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

3379 lines
110 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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);
}