📄 cmainmanage.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 + -