⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmainmanage.cpp

📁 zip压缩,解压缩 英文版本的,大家凑货看
💻 CPP
字号:
#include "CMainManage.h"

#include "CGInput.h"
#include "CGDevice.h"

CMainManage::CMainManage()
{
	eye=D3DXVECTOR3(0.0f,-500.0f,-400.0f);
}

CMainManage::~CMainManage()
{
}
void CMainManage::Init()
{	
	CGInput *pInput=CGInput::GetInstance();
	pInput->OnCreateDevice(GetModuleHandle(NULL),GetActiveWindow());

	skybox.CreateBox();
	skybox.SetTrans(0.0f,0.0f,0.0f,10000.0f,10000.0f,10000.0f);
	water.Create();
	water.SetTrans(0.0f,-1000.0f,0.0f,100.0f,1.0f,100.0f);
	ship.Create();
	ship.SetTrans(0.0f,-1050.0f,0.0f,100.0f,100.0f,100.0f);
}

void CMainManage::Destroy()
{
}

void CMainManage::Update()
{
	CGInput *pInput=CGInput::GetInstance();
	pInput->UpdateData();
	if(pInput->GetKeyDown(DIK_W))		
		baseCamera.Move(0.0f,0.0f,10.0f);
	if(pInput->GetKeyDown(DIK_S))
		baseCamera.Move(0.0f,0.0f,-10.0f);
	if(pInput->GetKeyDown(DIK_A))
		baseCamera.Move(-10.0f,0.0f,0.0f);
	if(pInput->GetKeyDown(DIK_D))
		baseCamera.Move(10.0f,0.0f,0.0f);
	if(pInput->GetKeyDown(DIK_PGUP))
		baseCamera.Move(0.00f,10.0f,0.0f);
	if(pInput->GetKeyDown(DIK_PGDN))
		baseCamera.Move(0.00f,-10.0f,0.0f);
	if(pInput->GetKeyDown(DIK_I))		
		baseCamera.Rotate(0.001f,0.0f,0.0f);
	if(pInput->GetKeyDown(DIK_K))		
		baseCamera.Rotate(-0.001f,0.0f,0.0f);
	if(pInput->GetKeyDown(DIK_J))		
		baseCamera.Rotate(0.0f,0.001f,0.0f);
	if(pInput->GetKeyDown(DIK_L))		
		baseCamera.Rotate(0.0f,-0.001f,0.0f);

	if(pInput->GetKeyDown(DIK_UP))
	{
		ship.Move(0.0f,100.0f);
	}
/*	if(pInput->GetKeyDown(DIK_DOWN))
	{
		ship.Move(0.0f,-100.0f);
	}*/
	if(pInput->GetKeyDown(DIK_LEFT))
		ship.Rotate(0.1f);
	if(pInput->GetKeyDown(DIK_RIGHT))
		ship.Rotate(-0.1f);
	ship.Update();
//	water.RockAndRoll(0.12f,0.2f,1,3);
	
}

void CMainManage::Render()
{
	//camera.SetCamera();
	//baseCamera.UpdateCamera();
	CGDevice *dev=CGDevice::GetInstance();
	LPDIRECT3DDEVICE9 pdev=dev->GetDev();

	//pdev->SetRenderState(D3DRS_FOGENABLE,TRUE);
	pdev->SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_LINEAR);
	pdev->SetRenderState(D3DRS_FOGCOLOR,0x00FFFFFF);
	float start=2000,end=20000;
	pdev->SetRenderState(D3DRS_FOGSTART,*(DWORD*)&start);
	pdev->SetRenderState(D3DRS_FOGEND,*(DWORD*)&end);

	UpdateView();
	skybox.Render();
	ship.Render();
	water.Render();
}

void CMainManage::Reset()
{
//	camera.SetCamera();
}

void CMainManage::UpdateView()
{
	CGDevice *dev=CGDevice::GetInstance();
	LPDIRECT3DDEVICE9 pdev=dev->GetDev();

	D3DXMATRIX mat;
	

	D3DXVECTOR3 tempVec;

	tempVec=ship.eye-eye;
	float length=D3DXVec3Length(&tempVec);
	tempVec.y=ship.eye.y;
	D3DXVec3Normalize(&tempVec,&tempVec);

	if(length>1500.0f)
	{
		eye+=tempVec*length*length*0.000001f;		
	}
/*	else if(length<1000.0f)
	{
		eye-=100*tempVec;
	}
	*/

	D3DXVECTOR3 up=D3DXVECTOR3(0.0f,1.0f,0.0f);
	D3DXMatrixLookAtLH(&mat,&eye,&ship.eye,&up);
	pdev->SetTransform(D3DTS_VIEW,&mat);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -