2024-12-21 10:04:04 +08:00
|
|
|
|
// EngineTest.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
#include "EngineTest.h"
|
|
|
|
|
|
#include "EternityEngine.h"
|
|
|
|
|
|
#include "CrossVector.h"
|
|
|
|
|
|
#include "CameraData.h"
|
|
|
|
|
|
#include "FrameSync.h"
|
|
|
|
|
|
#include "EtOptionController.h"
|
|
|
|
|
|
#include "EtResourceMng.h"
|
|
|
|
|
|
|
|
|
|
|
|
//#include "EtUIDialog.h"
|
|
|
|
|
|
|
|
|
|
|
|
using namespace EternityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
#define MAX_LOADSTRING 100
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:
|
|
|
|
|
|
HINSTANCE hInst; // <20><><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD><CFBD>Դϴ<D4B4>.
|
|
|
|
|
|
TCHAR szTitle[MAX_LOADSTRING]; // <20><><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
TCHAR szWindowClass[MAX_LOADSTRING]; // <20>⺻ â Ŭ<><C5AC><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8>Դϴ<D4B4>.
|
|
|
|
|
|
|
|
|
|
|
|
// <20><> <20>ڵ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
ATOM MyRegisterClass(HINSTANCE hInstance);
|
|
|
|
|
|
BOOL InitInstance(HINSTANCE, int);
|
|
|
|
|
|
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
|
|
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
|
|
|
|
|
|
|
|
HWND g_hWnd;
|
|
|
|
|
|
CCrossVector g_CameraCross;
|
|
|
|
|
|
EtCameraHandle g_hCamera, g_hCamera2;
|
|
|
|
|
|
EtAniObjectHandle g_hObject, g_hObject2;
|
|
|
|
|
|
EtObjectHandle g_hPickObj;
|
|
|
|
|
|
CCrossVector g_PickObjCross;
|
|
|
|
|
|
float g_fFrame = 0.0f;
|
|
|
|
|
|
POINT g_MousePoint;
|
|
|
|
|
|
EtTerrainHandle g_hTerrain;
|
|
|
|
|
|
EtParticleHandle g_hParticle;
|
|
|
|
|
|
CCrossVector g_PatCross;
|
|
|
|
|
|
int g_nEffectDataIndex = -1;
|
|
|
|
|
|
|
|
|
|
|
|
EtMatrix g_LightViewMat;
|
|
|
|
|
|
|
|
|
|
|
|
CCrossVector g_AniObjCross;
|
|
|
|
|
|
EtAniObjectHandle g_hAniObject;
|
|
|
|
|
|
float g_fFrame1 = 0.0f;
|
|
|
|
|
|
float g_fFrame2 = 0.0f;
|
|
|
|
|
|
|
|
|
|
|
|
EtLineTrailHandle g_hLineTrail;
|
|
|
|
|
|
CCrossVector g_LineTrailCross;
|
|
|
|
|
|
bool g_bLineTrailStart = false;
|
|
|
|
|
|
|
|
|
|
|
|
float g_fCameraFrame = 0.0f;
|
|
|
|
|
|
CCameraData g_CameraData;
|
|
|
|
|
|
|
|
|
|
|
|
CFrameSync g_FrameSync;
|
|
|
|
|
|
extern EtTextureHandle g_hDepthMap;
|
|
|
|
|
|
|
|
|
|
|
|
void ProcessCamera()
|
|
|
|
|
|
{
|
|
|
|
|
|
int i;
|
|
|
|
|
|
EtQuat Quat1, Quat2;
|
|
|
|
|
|
EtVector3 vPosition1, vPosition2;
|
|
|
|
|
|
float fPositionWeight, fQuatWeight;
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < ( int )g_CameraData.m_vecPosition.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( g_CameraData.m_vecPosition[ i ].nTime > g_fCameraFrame )
|
|
|
|
|
|
{
|
|
|
|
|
|
vPosition1 = g_CameraData.m_vecPosition[ i - 1 ].vPosition;
|
|
|
|
|
|
vPosition2 = g_CameraData.m_vecPosition[ i ].vPosition;
|
|
|
|
|
|
fPositionWeight = ( g_fCameraFrame - g_CameraData.m_vecPosition[ i - 1 ].nTime ) / ( g_CameraData.m_vecPosition[ i ].nTime - g_CameraData.m_vecPosition[ i - 1 ].nTime );
|
|
|
|
|
|
EtVec3Lerp( &vPosition1, &vPosition1, &vPosition2, fPositionWeight );
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < ( int )g_CameraData.m_vecRotation.size(); i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( g_CameraData.m_vecRotation[ i ].nTime > g_fCameraFrame )
|
|
|
|
|
|
{
|
|
|
|
|
|
Quat1 = g_CameraData.m_vecRotation[ i - 1 ].qRotation;
|
|
|
|
|
|
Quat2 = g_CameraData.m_vecRotation[ i ].qRotation;
|
|
|
|
|
|
fQuatWeight = ( g_fCameraFrame - g_CameraData.m_vecRotation[ i - 1 ].nTime ) / ( g_CameraData.m_vecRotation[ i ].nTime - g_CameraData.m_vecRotation[ i - 1 ].nTime );
|
|
|
|
|
|
EtQuaternionSlerp( &Quat1, &Quat1, &Quat2, fQuatWeight );
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
EtMatrix CameraMat;
|
|
|
|
|
|
|
|
|
|
|
|
EtMatrixTransformation( &CameraMat, NULL, NULL, NULL, NULL, &Quat1, &vPosition1 );
|
|
|
|
|
|
g_hCamera->Update( &CameraMat );
|
|
|
|
|
|
|
|
|
|
|
|
// g_fCameraFrame = 0.0f;
|
|
|
|
|
|
g_fCameraFrame += 0.05f;
|
|
|
|
|
|
|
|
|
|
|
|
if( GetAsyncKeyState( VK_RIGHT ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_fCameraFrame = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float CalcMovement( float &fCurSpeed, float fElapsedTime, float fMaxSpeed, float fMinSpeed, float fAccel )
|
|
|
|
|
|
{
|
|
|
|
|
|
float fFinalSpeed, fMovement, fDiffTime;
|
|
|
|
|
|
|
|
|
|
|
|
fFinalSpeed = fCurSpeed + fElapsedTime * fAccel;
|
|
|
|
|
|
if( ( fFinalSpeed > fMaxSpeed ) && ( fCurSpeed <= fMaxSpeed ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
fDiffTime = ( fMaxSpeed - fCurSpeed ) / ( fFinalSpeed - fCurSpeed ) * fElapsedTime;
|
|
|
|
|
|
fMovement = fCurSpeed * fDiffTime + fAccel * fDiffTime * fDiffTime * 0.5f;
|
|
|
|
|
|
fMovement += fMaxSpeed * ( fElapsedTime - fDiffTime );
|
|
|
|
|
|
fCurSpeed = fMaxSpeed;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( ( fFinalSpeed < fMinSpeed ) && ( fCurSpeed >= fMinSpeed ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
fDiffTime = ( fCurSpeed - fMinSpeed ) / ( fCurSpeed - fFinalSpeed ) * fElapsedTime;
|
|
|
|
|
|
fMovement = fCurSpeed * fDiffTime + fAccel * fDiffTime * fDiffTime * 0.5f;
|
|
|
|
|
|
fMovement += fMinSpeed * ( fElapsedTime - fDiffTime );
|
|
|
|
|
|
fCurSpeed = fMinSpeed;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
fMovement = fCurSpeed * fElapsedTime + fAccel * fElapsedTime * fElapsedTime * 0.5f;
|
|
|
|
|
|
fCurSpeed = fFinalSpeed;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return fMovement;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TestAccel()
|
|
|
|
|
|
{
|
|
|
|
|
|
EtVector3 Accel, Gravity, Position;
|
|
|
|
|
|
float fTime;
|
|
|
|
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
Accel = EtVector3( 0.0f, 3600.0f, 0.0f );
|
|
|
|
|
|
Gravity = EtVector3( 0.0f, -980.0f, 0.0f );
|
|
|
|
|
|
Position = EtVector3( 0.0f, 0.0f, 0.0f );
|
|
|
|
|
|
|
|
|
|
|
|
fTime = 5.0f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, 0.0f, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, 0.0f, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, 0.0f, Gravity.z );
|
|
|
|
|
|
Accel = EtVector3( 0.0f, 3600.0f, 0.0f );
|
|
|
|
|
|
Gravity = EtVector3( 0.0f, -980.0f, 0.0f );
|
|
|
|
|
|
Position = EtVector3( 0.0f, 0.0f, 0.0f );
|
|
|
|
|
|
fTime = 10.0f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, 0.0f, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, 0.0f, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, 0.0f, Gravity.z );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 40; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
fTime = 0.1f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, -FLT_MAX, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, -FLT_MAX, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, -FLT_MAX, Gravity.z );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Accel = EtVector3( 0.0f, 3600.0f, 0.0f );
|
|
|
|
|
|
Position = EtVector3( 0.0f, 0.0f, 0.0f );
|
|
|
|
|
|
for( i = 0; i < 20; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
fTime = 0.2f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, -FLT_MAX, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, -FLT_MAX, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, -FLT_MAX, Gravity.z );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Accel = EtVector3( 0.0f, 3600.0f, 0.0f );
|
|
|
|
|
|
Position = EtVector3( 0.0f, 0.0f, 0.0f );
|
|
|
|
|
|
for( i = 0; i < 10; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
fTime = 0.4f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, -FLT_MAX, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, -FLT_MAX, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, -FLT_MAX, Gravity.z );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Accel = EtVector3( 0.0f, 3600.0f, 0.0f );
|
|
|
|
|
|
Position = EtVector3( 0.0f, 0.0f, 0.0f );
|
|
|
|
|
|
fTime = 4.0f;
|
|
|
|
|
|
Position.x += CalcMovement( Accel.x, fTime, 6000.0f, -FLT_MAX, Gravity.x );
|
|
|
|
|
|
Position.y += CalcMovement( Accel.y, fTime, 6000.0f, -FLT_MAX, Gravity.y );
|
|
|
|
|
|
Position.z += CalcMovement( Accel.z, fTime, 6000.0f, -FLT_MAX, Gravity.z );
|
|
|
|
|
|
|
|
|
|
|
|
int qqq;
|
|
|
|
|
|
qqq = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*class CCollisionDraw : public CEtCustomRender
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CCollisionDraw(){}
|
|
|
|
|
|
virtual ~CCollisionDraw(){}
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
void RenderAlpha( float fElapsedTime );
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
CCollisionDraw *g_CustomDraw;*/
|
|
|
|
|
|
|
|
|
|
|
|
/*#include "CollisionTest.h"
|
|
|
|
|
|
#include "EtGenerateCollisionMesh.h"
|
|
|
|
|
|
CCrossVector g_ColCross1, g_ColCross2;
|
|
|
|
|
|
SSphere g_Sphere1, g_Sphere2;
|
|
|
|
|
|
SRay g_Ray1, g_Ray2;
|
|
|
|
|
|
STriangle g_Tri1, g_Tri2;
|
|
|
|
|
|
SBox g_Box1, g_Box2;
|
|
|
|
|
|
SCylinder g_Cylinder1, g_Cylinder2;
|
|
|
|
|
|
SCapsule g_Capsule1, g_Capsule2;
|
|
|
|
|
|
CEtCustomMeshStream g_ColDraw1, g_ColDraw2;
|
|
|
|
|
|
DWORD g_dwLineColor = 0xffffffff;
|
|
|
|
|
|
|
|
|
|
|
|
void InitCollision()
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center = EtVector3( 0.0f, 300.0f, 100.0f );
|
|
|
|
|
|
g_Sphere1.fRadius = 100.0f;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
|
|
|
|
|
|
g_Tri1.vPoint[ 0 ] = EtVector3( 400.0f, 300.0f, 100.0f );
|
|
|
|
|
|
g_Tri1.vPoint[ 1 ] = EtVector3( 500.0f, 400.0f, 100.0f );
|
|
|
|
|
|
g_Tri1.vPoint[ 2 ] = EtVector3( 600.0f, 300.0f, 100.0f );
|
|
|
|
|
|
g_Tri1.vNormal = EtVector3( 0.0f, 0.0f, 1.0f );
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw2, g_Tri1 );
|
|
|
|
|
|
|
|
|
|
|
|
g_CustomDraw = new CCollisionDraw();
|
|
|
|
|
|
}*/
|
|
|
|
|
|
/*void CheckCollisionMove()
|
|
|
|
|
|
{
|
|
|
|
|
|
SFindCollisionInfo CollisionInfo;
|
|
|
|
|
|
if( FindSphereToTri( g_Sphere1, g_Tri1, CollisionInfo ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_dwLineColor = 0xffff0000;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
g_dwLineColor = 0xffffffff;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if( GetAsyncKeyState( VK_LEFT ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center -= g_CameraCross.m_XVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_RIGHT ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center += g_CameraCross.m_XVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_UP ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center += g_CameraCross.m_ZVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_DOWN ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center -= g_CameraCross.m_ZVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_HOME ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center += g_CameraCross.m_YVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_END ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_Sphere1.Center -= g_CameraCross.m_YVector;
|
|
|
|
|
|
GenerateCollisionMesh( g_ColDraw1, g_Sphere1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CCollisionDraw::RenderAlpha( float fElapsedTime )
|
|
|
|
|
|
{
|
|
|
|
|
|
EtMatrix WorldMat;
|
|
|
|
|
|
EtCameraHandle hCamera;
|
|
|
|
|
|
|
|
|
|
|
|
hCamera = CEtCamera::GetActiveCamera();
|
|
|
|
|
|
EtMatrixIdentity( &WorldMat );
|
|
|
|
|
|
GetEtDevice()->SetWorldTransform( &WorldMat );
|
|
|
|
|
|
GetEtDevice()->SetViewTransform( hCamera->GetViewMat() );
|
|
|
|
|
|
GetEtDevice()->SetProjTransform( hCamera->GetProjMat() );
|
|
|
|
|
|
GetEtDevice()->EnableLight( false );
|
|
|
|
|
|
GetEtDevice()->SetVertexShader( NULL );
|
|
|
|
|
|
GetEtDevice()->SetPixelShader( NULL );
|
|
|
|
|
|
( ( IDirect3DDevice9 * )GetEtDevice()->GetDevicePtr() )->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
|
|
|
|
|
|
( ( IDirect3DDevice9 * )GetEtDevice()->GetDevicePtr() )->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR );
|
|
|
|
|
|
( ( IDirect3DDevice9 * )GetEtDevice()->GetDevicePtr() )->SetRenderState( D3DRS_TEXTUREFACTOR, g_dwLineColor );
|
|
|
|
|
|
( ( IDirect3DDevice9 * )GetEtDevice()->GetDevicePtr() )->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME );
|
|
|
|
|
|
g_ColDraw1.Draw( 0, 0, g_ColDraw1.GetIndexCount() / 3 );
|
|
|
|
|
|
g_ColDraw2.Draw( 0, 0, g_ColDraw2.GetIndexCount() / 3 );
|
|
|
|
|
|
( ( IDirect3DDevice9 * )GetEtDevice()->GetDevicePtr() )->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
|
|
|
|
|
|
}
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
int APIENTRY _tWinMain(HINSTANCE hInstance,
|
|
|
|
|
|
HINSTANCE hPrevInstance,
|
|
|
|
|
|
LPTSTR lpCmdLine,
|
|
|
|
|
|
int nCmdShow)
|
|
|
|
|
|
{
|
|
|
|
|
|
UNREFERENCED_PARAMETER(hPrevInstance);
|
|
|
|
|
|
UNREFERENCED_PARAMETER(lpCmdLine);
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20>ڵ带 <20>Է<EFBFBD><D4B7>մϴ<D5B4>.
|
|
|
|
|
|
MSG msg;
|
|
|
|
|
|
HACCEL hAccelTable;
|
|
|
|
|
|
BOOL bGotMsg;
|
|
|
|
|
|
bool bShaderDebug;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
|
|
|
|
|
|
LoadString(hInstance, IDC_ENGINETEST, szWindowClass, MAX_LOADSTRING);
|
|
|
|
|
|
MyRegisterClass(hInstance);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
if (!InitInstance (hInstance, nCmdShow))
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
|
|
|
|
|
|
|
|
|
|
|
|
TestAccel();
|
|
|
|
|
|
|
|
|
|
|
|
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ENGINETEST));
|
|
|
|
|
|
|
|
|
|
|
|
bShaderDebug = false;
|
|
|
|
|
|
if( strstr( ( const char *)lpCmdLine, ( const char *)L"ShaderDeubg" ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
bShaderDebug = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SOBB Box;
|
|
|
|
|
|
SSegment Segment;
|
|
|
|
|
|
Box.Center = EtVector3( 200.0f, 200.0f, 200.0f );
|
|
|
|
|
|
Box.Axis[ 0 ] = EtVector3( 1.0f, 0.0f, 0.0f );
|
|
|
|
|
|
Box.Axis[ 1 ] = EtVector3( 0.0f, 1.0f, 0.0f );
|
|
|
|
|
|
Box.Axis[ 2 ] = EtVector3( 0.0f, 0.0f, 1.0f );
|
|
|
|
|
|
Box.Extent[ 0 ] = 100.0f;
|
|
|
|
|
|
Box.Extent[ 1 ] = 100.0f;
|
|
|
|
|
|
Box.Extent[ 2 ] = 100.0f;
|
|
|
|
|
|
Box.CalcVertices();
|
|
|
|
|
|
Segment.vOrigin = EtVector3( 200.0f, 200.0f, 0.0f );
|
|
|
|
|
|
Segment.vDirection = EtVector3( 400.0f, 200.0f, 400.0f ) - Segment.vOrigin;
|
|
|
|
|
|
|
|
|
|
|
|
SGraphicOption Option;
|
|
|
|
|
|
Option.DynamicShadowType = ST_NONE;
|
|
|
|
|
|
// InitializeEngine( g_hWnd, 1016, 734, true, false, bShaderDebug );
|
|
|
|
|
|
InitializeEngine( g_hWnd, 1600, 900, true, false, NULL, bShaderDebug );
|
|
|
|
|
|
|
|
|
|
|
|
char szCurDir[ _MAX_PATH ], szTargetDir[ _MAX_PATH ];
|
|
|
|
|
|
GetCurrentDirectoryA( _MAX_PATH, szCurDir );
|
|
|
|
|
|
strcat( szCurDir, "\\Data\\" );
|
|
|
|
|
|
CEtResourceMng *pResMng = new CEtResourceMng( false );
|
|
|
|
|
|
pResMng->Initialize();
|
|
|
|
|
|
CEtResourceMng::GetInstance().AddResourcePath( szCurDir );
|
|
|
|
|
|
strcpy( szTargetDir, szCurDir );
|
|
|
|
|
|
strcat( szTargetDir, "Ogre\\" );
|
|
|
|
|
|
CEtResourceMng::GetInstance().AddResourcePath( szTargetDir );
|
|
|
|
|
|
strcpy( szTargetDir, szCurDir );
|
|
|
|
|
|
strcat( szTargetDir, "Warrior\\" );
|
|
|
|
|
|
CEtResourceMng::GetInstance().AddResourcePath( szTargetDir );
|
|
|
|
|
|
strcpy( szTargetDir, szCurDir );
|
|
|
|
|
|
strcat( szTargetDir, "Archer\\" );
|
|
|
|
|
|
CEtResourceMng::GetInstance().AddResourcePath( szTargetDir );
|
|
|
|
|
|
GetCurrentDirectoryA( _MAX_PATH, szCurDir );
|
|
|
|
|
|
strcat( szCurDir, "\\Data\\" );
|
|
|
|
|
|
strcat( szCurDir, "Shaders\\" );
|
|
|
|
|
|
CEtResourceMng::GetInstance().AddResourcePath( szCurDir );
|
|
|
|
|
|
InitilaizeEffect();
|
|
|
|
|
|
|
|
|
|
|
|
g_FrameSync.Begin( -1 );
|
|
|
|
|
|
|
|
|
|
|
|
// CFileStream Stream( "D:\\Work\\DragonNest\\Client\\EngineTest\\Data\\Scene01.cam" );
|
|
|
|
|
|
// g_CameraData.LoadResource( &Stream );
|
|
|
|
|
|
|
|
|
|
|
|
// InitCollision();
|
|
|
|
|
|
|
|
|
|
|
|
SLightInfo LightInfo;
|
|
|
|
|
|
|
|
|
|
|
|
LightInfo.bCastShadow = false;
|
|
|
|
|
|
// LightInfo.Direction = EtVector3( 0.38933533f, -0.85627538f, -0.30888590f );
|
|
|
|
|
|
LightInfo.Direction = EtVector3( -1.0f, -1.0f, 1.0f );
|
|
|
|
|
|
// LightInfo.Direction = EtVector3( -0.78558189f, -0.58445191f, -0.20316739f );
|
|
|
|
|
|
EtVec3Normalize( &LightInfo.Direction, &LightInfo.Direction );
|
|
|
|
|
|
CreateLight( &LightInfo );
|
|
|
|
|
|
SetGlobalAmbient( &EtColor( 0.4f, 0.4f, 0.4f, 1.0f ) );
|
|
|
|
|
|
// SetGlobalAmbient( &EtColor( 0.0f, 0.0f, 0.0f, 1.0f ) );
|
|
|
|
|
|
|
|
|
|
|
|
LightInfo.Diffuse = EtColor( 1.0f, 0.0f, 0.0f, 1.0f );
|
|
|
|
|
|
LightInfo.Direction = EtVector3( 1.0f, -1.0f, 1.0f );
|
|
|
|
|
|
// CreateLight( &LightInfo );
|
|
|
|
|
|
|
|
|
|
|
|
SCameraInfo CameraInfo;
|
|
|
|
|
|
/* CameraInfo.fNear = 3.0f;
|
|
|
|
|
|
CameraInfo.fFar = 300.0f;*/
|
|
|
|
|
|
|
|
|
|
|
|
/* CameraInfo.Type = CT_ORTHOGONAL;
|
|
|
|
|
|
CameraInfo.fViewWidth = 2000.0f;
|
|
|
|
|
|
CameraInfo.fViewHeight = 2000.0f;*/
|
|
|
|
|
|
|
|
|
|
|
|
CameraInfo.fFar = 50000.0f;
|
|
|
|
|
|
// CameraInfo.fFar = 100000.0f;
|
|
|
|
|
|
|
|
|
|
|
|
CameraInfo.fFogNear = 40000.0f;
|
|
|
|
|
|
CameraInfo.fFogFar = 50000.0f;
|
|
|
|
|
|
CameraInfo.fFOV = ET_PI / 4;
|
|
|
|
|
|
g_hCamera = CreateCamera( &CameraInfo );
|
|
|
|
|
|
g_CameraCross.SetPosition( EtVector3( 402.0f, 300.0f, -206.0f ) );
|
|
|
|
|
|
// g_CameraCross.SetPosition( EtVector3( 0.0f, 45.0f, 0.0f ) );
|
|
|
|
|
|
|
|
|
|
|
|
g_CameraCross.SetPosition( EtVector3( 402.0f, 300.0f, -206.0f ) );
|
|
|
|
|
|
g_CameraCross.RotateYaw( -10 );
|
|
|
|
|
|
g_CameraCross.RotatePitch( 15 );
|
|
|
|
|
|
g_hCamera->Update( g_CameraCross );
|
|
|
|
|
|
|
|
|
|
|
|
int i, j;
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
for( i = 0; i < 5; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
for( j = 0; j < 5; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
EtAniObjectHandle hObjHandle;
|
|
|
|
|
|
CCrossVector ObjCross;
|
|
|
|
|
|
ObjCross.SetPosition( EtVector3( i * 200.0f + 200.0f, 0.0f, j * 200.0f + 200.0f ) );
|
|
|
|
|
|
hObjHandle = CreateAniObject( "Ogre.skn", "Ogre.ani" );
|
|
|
|
|
|
hObjHandle->Update( ObjCross );
|
|
|
|
|
|
hObjHandle->SetAniFrame( 0, ( float )( rand() % hObjHandle->GetAniLength( 0 ) ) );
|
|
|
|
|
|
hObjHandle->EnableShadowCast( false );
|
|
|
|
|
|
// hObjHandle->ShowBoundingBox( true );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* srand( 2000 );
|
|
|
|
|
|
for( i = 0; i < 100; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
EtObjectHandle hObjHandle;
|
|
|
|
|
|
CCrossVector ObjCross;
|
|
|
|
|
|
ObjCross.SetPosition( EtVector3( ( float )( rand() % 25600 ), 0.0f, ( float )( rand() % 25600 ) ) );
|
|
|
|
|
|
hObjHandle = CreateStaticObject( "Tree01.skn" );
|
|
|
|
|
|
hObjHandle->Update( ObjCross );
|
|
|
|
|
|
hObjHandle->EnableLightMapCast( true );
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
/* EtAniObjectHandle g_hAniObject;
|
|
|
|
|
|
g_AniObjCross.SetPosition( EtVector3( 400.0f, 0.0f, 400.0f ) );
|
|
|
|
|
|
// g_AniObjCross.RotateYaw( 30.0f );
|
|
|
|
|
|
g_hAniObject = CreateAniObject( "Archer.skn", "Archer.ani" );
|
|
|
|
|
|
// g_hAniObject->LinkSkin( "Sword.skn", "BoxBone01" );
|
|
|
|
|
|
g_hAniObject->Update( g_AniObjCross );
|
|
|
|
|
|
g_hAniObject->ShowBoundingBox( true );*/
|
|
|
|
|
|
// g_hAniObject->SetObjectAlpha( 0.5f );
|
|
|
|
|
|
// hObjHandle->Update( ObjCross );
|
|
|
|
|
|
|
|
|
|
|
|
/* int nBoneIndex;
|
|
|
|
|
|
EtObjectHandle hWeapon;
|
|
|
|
|
|
nBoneIndex = g_hAniObject->GetAniHandle()->GetBoneIndex( "BoxBone01" );
|
|
|
|
|
|
hWeapon = CreateStaticObject( "Sword.skn" );
|
|
|
|
|
|
hWeapon->SetParent( g_hAniObject, nBoneIndex );*/
|
|
|
|
|
|
|
|
|
|
|
|
/* LoadEnvTexture( "BlueSky_Cloud01.dds" );
|
|
|
|
|
|
|
|
|
|
|
|
EtObjectHandle hShpere;
|
|
|
|
|
|
CCrossVector SphereCross;
|
|
|
|
|
|
SphereCross.SetPosition( EtVector3( 0.0f, 300.0f, 0.0f ) );
|
|
|
|
|
|
hShpere = CreateStaticObject( "Sphere.skn" );
|
|
|
|
|
|
hShpere->Update( SphereCross );*/
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
CCrossVector ObjCross;
|
|
|
|
|
|
ObjCross.SetPosition( EtVector3( 400.0f, 0.0f, 400.0f ) );
|
|
|
|
|
|
ObjCross.RotateYaw( 180.0f );
|
|
|
|
|
|
g_hObject = CreateAniObject( "Warrior.skn", "Warrior.ani" );
|
|
|
|
|
|
g_hObject->EnableShadowCast( true );
|
|
|
|
|
|
g_hObject->Update( ObjCross );
|
|
|
|
|
|
|
|
|
|
|
|
ObjCross.SetPosition( EtVector3( 600.0f, 0.0f, 400.0f ) );
|
|
|
|
|
|
// g_hObject2 = CreateAniObject( "Ogre.skn", "Warrior.ani" );
|
|
|
|
|
|
g_hObject2 = CreateAniObject( "Ogre.skn", "Ogre.ani" );
|
|
|
|
|
|
g_hObject2->EnableShadowCast( true );
|
|
|
|
|
|
g_hObject2->Update( ObjCross );
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
CCrossVector g_PatCross;
|
|
|
|
|
|
int nParticleDataIndex;
|
|
|
|
|
|
g_PatCross.SetPosition( EtVector3( 500.0f, 200.0f, 200.0f ) );
|
|
|
|
|
|
nParticleDataIndex = LoadParticleData( "brooMagicball_Small.ptc" );
|
|
|
|
|
|
g_hParticle = CreateParticle( nParticleDataIndex, g_PatCross );
|
|
|
|
|
|
g_hParticle->EnableLoop( true );
|
|
|
|
|
|
g_hParticle->EnableIterate( true );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
g_nEffectDataIndex = LoadEffectData( "battest.eff" );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
|
|
STerrainInfo TerrainInfo;
|
|
|
|
|
|
short *pHeight;
|
|
|
|
|
|
DWORD *pLayer;
|
|
|
|
|
|
char *pGrass;
|
|
|
|
|
|
|
|
|
|
|
|
pHeight = new short[ 129 * 129 ];
|
|
|
|
|
|
pLayer = new DWORD[ 129 * 129 ];
|
|
|
|
|
|
pGrass = new char[ 128 * 128 ];
|
|
|
|
|
|
TerrainInfo.pHeight = pHeight;
|
|
|
|
|
|
TerrainInfo.pLayerDensity = pLayer;
|
|
|
|
|
|
TerrainInfo.pGrassBuffer = pGrass;
|
|
|
|
|
|
TerrainInfo.fGrassWidth[ 0 ] = 300.0f;
|
|
|
|
|
|
TerrainInfo.fGrassWidth[ 1 ] = 300.0f;
|
|
|
|
|
|
TerrainInfo.fGrassWidth[ 2 ] = 300.0f;
|
|
|
|
|
|
TerrainInfo.fGrassWidth[ 3 ] = 300.0f;
|
|
|
|
|
|
TerrainInfo.fMinGrassHeight[ 0 ] = 100.0f;
|
|
|
|
|
|
TerrainInfo.fMinGrassHeight[ 1 ] = 100.0f;
|
|
|
|
|
|
TerrainInfo.fMinGrassHeight[ 2 ] = 100.0f;
|
|
|
|
|
|
TerrainInfo.fMinGrassHeight[ 3 ] = 100.0f;
|
|
|
|
|
|
TerrainInfo.fMaxGrassHeight[ 0 ] = 150.0f;
|
|
|
|
|
|
TerrainInfo.fMaxGrassHeight[ 1 ] = 150.0f;
|
|
|
|
|
|
TerrainInfo.fMaxGrassHeight[ 2 ] = 150.0f;
|
|
|
|
|
|
TerrainInfo.fMaxGrassHeight[ 3 ] = 150.0f;
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 129; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
for( j = 0; j < 129; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0xff000000;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
memset( pGrass, 0, 128 * 128 );
|
|
|
|
|
|
for( i = 0; i < 13500; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
pGrass[ ( rand() % 25 ) * 128 + ( rand() % 25 ) ] = rand() % 4 + 1;
|
|
|
|
|
|
// pGrass[ rand() % ( 128 * 128 ) ] = rand() % 4 + 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 50; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
for( j = 0; j < 50; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pGrass[ i * 128 + j ] = 0x01;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// g_hTerrain = CreateTerrain( &TerrainInfo );
|
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 129; i++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
for( j = 0; j < 129; j++ )
|
|
|
|
|
|
{
|
|
|
|
|
|
float fLength;
|
|
|
|
|
|
|
|
|
|
|
|
fLength = sqrtf( float( ( j - 10 ) * ( j - 10 ) + ( i - 10 ) * ( i - 10 ) ) );
|
|
|
|
|
|
if( fLength > 8.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( fLength > 3.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = ( short )( 4000 - fLength * 500 );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 2500;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( fLength > 8.9f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0xff000000;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// pLayer[ i * 129 + j ] = 0xff000000;
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fLength = sqrtf( float( ( j - 30 ) * ( j - 30 ) + ( i - 10 ) * ( i - 10 ) ) );
|
|
|
|
|
|
if( fLength > 8.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( fLength > 3.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 2000;
|
|
|
|
|
|
pHeight[ i * 129 + j ] = ( short )( 2000 - fLength * 250 );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 1250;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( fLength <= 8.9f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
}
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 0.0f;
|
|
|
|
|
|
|
|
|
|
|
|
fLength = sqrtf( float( ( j - 60 ) * ( j - 60 ) + ( i - 60 ) * ( i - 60 ) ) );
|
|
|
|
|
|
if( fLength > 8.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( fLength > 3.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 2000;
|
|
|
|
|
|
pHeight[ i * 129 + j ] = ( short )( 2000 - fLength * 250 );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 1250;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( fLength <= 8.9f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
}
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
fLength = sqrtf( float( ( j - 55 ) * ( j - 55 ) + ( i - 10 ) * ( i - 10 ) ) );
|
|
|
|
|
|
if( fLength > 8.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( fLength > 3.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
// pHeight[ i * 129 + j ] = 2000;
|
|
|
|
|
|
pHeight[ i * 129 + j ] = ( short )( 2000 - fLength * 250 );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 1250;
|
|
|
|
|
|
}
|
|
|
|
|
|
if( fLength <= 8.9f )
|
|
|
|
|
|
{
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
}
|
|
|
|
|
|
pLayer[ i * 129 + j ] = 0x000000ff;
|
|
|
|
|
|
|
|
|
|
|
|
pHeight[ i * 129 + j ] = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TerrainInfo.Type = TT_CLIFF;
|
|
|
|
|
|
TerrainInfo.fTextureDistance = 500.0f;
|
|
|
|
|
|
TerrainInfo.TerrainOffset = EtVector3( -1000.0f, 0.0f, -1000.0f );
|
|
|
|
|
|
g_hTerrain = CreateTerrain( &TerrainInfo );
|
|
|
|
|
|
g_hTerrain->InitializeBlock();
|
|
|
|
|
|
g_hTerrain->SetTexture( 0, "GroundGrass.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 1, "GroundGrass.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 2, "GroundGrass.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 3, "GroundGrass.dds" );
|
|
|
|
|
|
g_hTerrain->SetGrassTexture( "grassPack.dds" );
|
|
|
|
|
|
|
|
|
|
|
|
// EternityEngine::CreateFilter( SF_RADIALBLUR );
|
|
|
|
|
|
|
|
|
|
|
|
// g_hTerrain->DrawGrid( true, 0 );
|
|
|
|
|
|
|
|
|
|
|
|
/* g_hTerrain->SetTexture( 4, "dry_earth04.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 5, "dry_earth04.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 6, "dry_earth04.dds" );
|
|
|
|
|
|
g_hTerrain->SetTexture( 7, "dry_earth04.dds" );
|
|
|
|
|
|
g_hTerrain->SetTextureDistance( 4, 100000.0f );
|
|
|
|
|
|
g_hTerrain->SetTextureDistance( 5, 100000.0f );
|
|
|
|
|
|
g_hTerrain->SetTextureDistance( 6, 100000.0f );
|
|
|
|
|
|
g_hTerrain->SetTextureDistance( 7, 100000.0f );*/
|
|
|
|
|
|
|
|
|
|
|
|
// delete [] pHeight;
|
|
|
|
|
|
// delete [] pLayer;
|
|
|
|
|
|
|
|
|
|
|
|
// CreateFilter( SF_COLORADJUST2 );
|
|
|
|
|
|
// CEtBloomFilter *pFilter;
|
|
|
|
|
|
// pFilter = ( CEtBloomFilter * )CreateFilter( SF_BLOOM );
|
|
|
|
|
|
// pFilter->SetBloomSensitivity( 1.0f );
|
|
|
|
|
|
|
|
|
|
|
|
/* EtObjectHandle hObjHandle;
|
|
|
|
|
|
CCrossVector ObjCross;
|
|
|
|
|
|
// ObjCross.SetPosition( EtVector3( 400.0f, 0.0f, 1000.0f ) );
|
|
|
|
|
|
ObjCross.SetPosition( EtVector3( 0.0f, 0.0f, 0.0f ) );
|
|
|
|
|
|
ObjCross.RotateYaw( 90.0f );
|
|
|
|
|
|
hObjHandle = CreateStaticObject( "Elfland_Root01.skn" );
|
|
|
|
|
|
hObjHandle->Update( ObjCross );
|
|
|
|
|
|
hObjHandle->EnableLightMapCast( true );
|
|
|
|
|
|
hObjHandle->ShowBoundingBox( true );
|
|
|
|
|
|
hObjHandle->ShowCollisionPrimitive( true );*/
|
|
|
|
|
|
|
|
|
|
|
|
g_hTerrain->BakeLightMap( -1, 256, 256, 1 );
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
CEtUIDialog *pDialog;
|
|
|
|
|
|
|
|
|
|
|
|
pDialog = new CEtUIDialog();
|
|
|
|
|
|
pDialog->Initialize( "ttt" );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
EtTextureHandle hTrailTexture;
|
|
|
|
|
|
hTrailTexture = LoadTexture( "ArrowTrail.dds" );
|
|
|
|
|
|
g_hLineTrail = CreateLineTrail( hTrailTexture, 0.3f, 20.0f, 30.0f );
|
|
|
|
|
|
// g_hLineTrail->SetLineColor( EtColor( 1.0f, 0.0f, 0.0f, 1.0f ) );
|
|
|
|
|
|
g_LineTrailCross.RotateYaw( -90.0f );
|
|
|
|
|
|
g_LineTrailCross.SetPosition( EtVector3( 100.0f, 100.0f, 100.0f ) );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
SCameraInfo RenderTargetCameraInfo;
|
|
|
|
|
|
RenderTargetCameraInfo.Target = CT_RENDERTARGET;
|
|
|
|
|
|
RenderTargetCameraInfo.fWidth = 256.0f;
|
|
|
|
|
|
RenderTargetCameraInfo.fHeight = 256.0f;
|
|
|
|
|
|
g_hCamera2 = CreateCamera( &RenderTargetCameraInfo );
|
|
|
|
|
|
// g_hCamera2->AddRenderObject( hObjHandle );
|
|
|
|
|
|
g_hCamera2->Update( g_CameraCross );
|
|
|
|
|
|
// g_hCamera2->AddRenderSkin( "mada.skn", ObjCross );
|
|
|
|
|
|
// g_hCamera2->RenderSkinList();
|
|
|
|
|
|
g_hCamera2->RenderTerrain();
|
|
|
|
|
|
// SAFE_RELEASE_SPTR( g_hCamera2 );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// <20>⺻ <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE );
|
|
|
|
|
|
while ( WM_QUIT != msg.message )
|
|
|
|
|
|
{
|
|
|
|
|
|
bGotMsg = PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE );
|
|
|
|
|
|
if( bGotMsg )
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
|
|
|
|
|
|
{
|
|
|
|
|
|
TranslateMessage(&msg);
|
|
|
|
|
|
DispatchMessage(&msg);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
float fZValue;
|
|
|
|
|
|
EtVector4 Coord;
|
|
|
|
|
|
EtMatrix *pViewMat, *pProjMat, ViewProjMat;
|
|
|
|
|
|
pViewMat = g_hCamera->GetViewMat();
|
|
|
|
|
|
pProjMat = g_hCamera->GetProjMat();
|
|
|
|
|
|
EtMatrixMultiply( &ViewProjMat, pViewMat, pProjMat );
|
|
|
|
|
|
Coord = EtVector4( 0.0f, 0.0f, 150.0f, 1.0f );
|
|
|
|
|
|
EtVec4Transform( &Coord, &Coord, &ViewProjMat );
|
|
|
|
|
|
fZValue = Coord.z / Coord.w;
|
|
|
|
|
|
|
|
|
|
|
|
float fCalcZ;
|
|
|
|
|
|
fCalcZ = pProjMat->_43 / ( fZValue - pProjMat->_33 );
|
|
|
|
|
|
|
|
|
|
|
|
static float fMoveSpeed = 10.0f;
|
|
|
|
|
|
CCrossVector ObjCross;
|
|
|
|
|
|
|
|
|
|
|
|
if( GetAsyncKeyState( 'W' ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
if( g_hAniObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
EtVector3 CollisionNormal, Direction;
|
|
|
|
|
|
float fContactTime;
|
|
|
|
|
|
ObjCross = g_AniObjCross;
|
|
|
|
|
|
ObjCross.MoveFrontBack( fMoveSpeed );
|
|
|
|
|
|
if( g_hAniObject->TestCollision( ObjCross, CollisionNormal, fContactTime ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
CollisionNormal.y = 0.0f;
|
|
|
|
|
|
EtVec3Normalize( &CollisionNormal, &CollisionNormal );
|
|
|
|
|
|
Direction = CollisionNormal + ObjCross.m_ZVector;
|
|
|
|
|
|
EtVec3Normalize( &Direction, &Direction );
|
|
|
|
|
|
Direction *= fMoveSpeed;
|
|
|
|
|
|
// Direction *= fMoveSpeed * fabs( EtVec3Dot( &Direction, &ObjCross.m_ZVector ) );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Direction = fMoveSpeed * ObjCross.m_ZVector;
|
|
|
|
|
|
}
|
|
|
|
|
|
g_AniObjCross.m_PosVector = g_AniObjCross.m_PosVector + Direction;
|
|
|
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
g_CameraCross.MoveFrontBack( fMoveSpeed );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( 'S' ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
if( g_hAniObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_AniObjCross.MoveFrontBack( -fMoveSpeed );
|
|
|
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
g_CameraCross.MoveFrontBack( -fMoveSpeed );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( 'A' ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
if( g_hAniObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_AniObjCross.MoveRightLeft( -fMoveSpeed );
|
|
|
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
g_CameraCross.MoveRightLeft( -fMoveSpeed );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( 'D' ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
if( g_hAniObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_AniObjCross.MoveRightLeft( fMoveSpeed );
|
|
|
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
g_CameraCross.MoveRightLeft( fMoveSpeed );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_F2 ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.m_ZVector = EtVector3( 0.0f, -1.0f, 1.01f );
|
|
|
|
|
|
EtVec3Normalize( &g_CameraCross.m_ZVector, &g_CameraCross.m_ZVector );
|
|
|
|
|
|
g_CameraCross.UpdateVectors();
|
|
|
|
|
|
g_CameraCross.SetPosition( 402.0f, 300.0f, -206.0f );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_F3 ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.m_ZVector = EtVector3( 0.0f, -1.01f, 1.0f );
|
|
|
|
|
|
EtVec3Normalize( &g_CameraCross.m_ZVector, &g_CameraCross.m_ZVector );
|
|
|
|
|
|
g_CameraCross.UpdateVectors();
|
|
|
|
|
|
g_CameraCross.SetPosition( 402.0f, 300.0f, -206.0f );
|
|
|
|
|
|
}
|
|
|
|
|
|
// CheckCollisionMove();
|
|
|
|
|
|
if( g_hObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
static int nAniIndex = 0;
|
|
|
|
|
|
g_hObject->SetAniFrame( nAniIndex, 0.0f );
|
|
|
|
|
|
g_fFrame += 1.0f;
|
|
|
|
|
|
if( g_fFrame >= g_hObject->GetAniLength( nAniIndex ) - 1 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_fFrame = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
int nBoneIndex = g_hObject->GetAniHandle()->GetBoneIndex( "Bip01 Head" );
|
|
|
|
|
|
static float fRotationRadius = 0.0f;
|
|
|
|
|
|
// g_hObject->SetBoneRotation( nBoneIndex, EtVector3( fRotationRadius, 0.0f, 0.0f ) );
|
|
|
|
|
|
fRotationRadius += 1.0f;
|
|
|
|
|
|
if( fRotationRadius > 360.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
fRotationRadius = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if( g_hObject2 )
|
|
|
|
|
|
{
|
|
|
|
|
|
static int nAniIndex2 = 7;
|
|
|
|
|
|
g_hObject2->SetAniFrame( nAniIndex2, 0.0f );
|
|
|
|
|
|
g_fFrame2 += 1.0f;
|
|
|
|
|
|
if( g_fFrame2 >= g_hObject2->GetAniLength( nAniIndex2 ) - 1 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_fFrame2 = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if( g_hAniObject )
|
|
|
|
|
|
{
|
|
|
|
|
|
static int nAni1 = 4;
|
|
|
|
|
|
static int nAni2 = 17;
|
|
|
|
|
|
EtVector3 Rotation1, Rotation2, Rotation3;
|
|
|
|
|
|
g_hAniObject->SetAniFrame( nAni1, g_fFrame1 );
|
|
|
|
|
|
g_hAniObject->SetAniFrame( nAni2, g_fFrame2, g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 Spine" ) );
|
|
|
|
|
|
Rotation1 = EtVector3( 0.0f, 45.0f, 0.0f );
|
|
|
|
|
|
Rotation2 = EtVector3( 0.0f, 45.0f, 0.0f );
|
|
|
|
|
|
Rotation3 = EtVector3( 0.0f, 15.0f, 0.0f );
|
|
|
|
|
|
/* g_hAniObject->SetBoneRotation( g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 Spine" ), Rotation1 );
|
|
|
|
|
|
g_hAniObject->SetBoneRotation( g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 Spine1" ), Rotation2 );
|
|
|
|
|
|
// g_hAniObject->SetBoneRotation( g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 R Clavicle" ), Rotation2 );
|
|
|
|
|
|
g_hAniObject->SetBoneRotation( g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 L Clavicle" ), Rotation3 );
|
|
|
|
|
|
g_hAniObject->SetBoneRotation( g_hAniObject->GetAniHandle()->GetBoneIndex( "Bip01 Neck" ), Rotation3 );*/
|
|
|
|
|
|
g_fFrame1 += 0.5f;
|
|
|
|
|
|
if( g_fFrame1 >= g_hAniObject->GetAniLength( nAni1 ) - 1 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_fFrame1 = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
g_fFrame2 += 0.5f;
|
|
|
|
|
|
if( g_fFrame2 >= g_hAniObject->GetAniLength( nAni2 ) - 1 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_fFrame2 = 0.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
g_hAniObject->Update( g_AniObjCross );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( g_hCamera )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_hCamera->Update( g_CameraCross );
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
if( g_hCamera2 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_hCamera2->Update( g_CameraCross );
|
|
|
|
|
|
}
|
|
|
|
|
|
if( GetAsyncKeyState( VK_SPACE ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
#if 1
|
|
|
|
|
|
if( g_nEffectDataIndex != -1 )
|
|
|
|
|
|
{
|
|
|
|
|
|
CreateEffectObject( g_nEffectDataIndex, NULL );
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
g_LineTrailCross.SetPosition( EtVector3( 100.0f, 100.0f, 100.0f ) );
|
|
|
|
|
|
g_bLineTrailStart = true;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
while( GetAsyncKeyState( VK_SPACE ) & 0x8000 )
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if( ( g_hLineTrail ) && ( g_bLineTrailStart ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( g_LineTrailCross.m_PosVector.x < 500.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_LineTrailCross.MoveUpDown( 5.0f );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
g_LineTrailCross.MoveUpDown( -5.0f );
|
|
|
|
|
|
}
|
|
|
|
|
|
g_LineTrailCross.MoveFrontBack( 20.0f );
|
|
|
|
|
|
g_hLineTrail->AddPoint( g_LineTrailCross.m_PosVector );
|
|
|
|
|
|
if( g_LineTrailCross.m_PosVector.x > 300.0f )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_bLineTrailStart = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ProcessCamera();
|
|
|
|
|
|
|
|
|
|
|
|
g_FrameSync.CheckSync();
|
|
|
|
|
|
g_FrameSync.UpdateTime();
|
|
|
|
|
|
char szString[ 1024 ];
|
|
|
|
|
|
sprintf_s( szString, 1024, "FPS : %f", g_FrameSync.GetFps() );
|
|
|
|
|
|
EternityEngine::DrawText2D( EtVector2( 0.01f, 0.01f ), szString, 0xffffffff );
|
|
|
|
|
|
|
|
|
|
|
|
// if( GetEtOptionController()->IsEnableBakeDepthMap() )
|
|
|
|
|
|
// {
|
|
|
|
|
|
// GetEtDevice()->SetRenderTarget( g_hDepthMap->GetSurfaceLevel(), 1 );
|
|
|
|
|
|
// }
|
|
|
|
|
|
ClearScreen( 0xff000000, 1.0f, 0 );
|
|
|
|
|
|
RenderFrame();
|
|
|
|
|
|
ShowFrame( NULL );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return (int) msg.wParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20>Լ<EFBFBD>: MyRegisterClass()
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>: â Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
// Windows 95<39><35><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> 'RegisterClassEx' <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20>ش<EFBFBD> <20>ڵ尡 Win32 <20>ý<EFBFBD><C3BD>۰<EFBFBD> ȣȯ<C8A3>ǵ<EFBFBD><C7B5><EFBFBD>
|
|
|
|
|
|
// <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20><><EFBFBD>쿡<EFBFBD><ECBFA1> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>ؾ<EFBFBD>
|
|
|
|
|
|
// <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// '<27>ùٸ<C3B9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
|
|
|
|
|
//
|
|
|
|
|
|
ATOM MyRegisterClass(HINSTANCE hInstance)
|
|
|
|
|
|
{
|
|
|
|
|
|
WNDCLASSEX wcex;
|
|
|
|
|
|
|
|
|
|
|
|
wcex.cbSize = sizeof(WNDCLASSEX);
|
|
|
|
|
|
|
|
|
|
|
|
wcex.style = CS_HREDRAW | CS_VREDRAW;
|
|
|
|
|
|
wcex.lpfnWndProc = WndProc;
|
|
|
|
|
|
wcex.cbClsExtra = 0;
|
|
|
|
|
|
wcex.cbWndExtra = 0;
|
|
|
|
|
|
wcex.hInstance = hInstance;
|
|
|
|
|
|
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ENGINETEST));
|
|
|
|
|
|
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
|
|
|
|
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
|
|
|
|
|
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_ENGINETEST);
|
|
|
|
|
|
wcex.lpszClassName = szWindowClass;
|
|
|
|
|
|
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
|
|
|
|
|
|
|
|
|
|
|
|
return RegisterClassEx(&wcex);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20>Լ<EFBFBD>: InitInstance(HINSTANCE, int)
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>: <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><> â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>
|
|
|
|
|
|
// <20><> <20><><EFBFBD>α<CEB1> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
//
|
|
|
|
|
|
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
|
|
|
|
|
{
|
|
|
|
|
|
HWND hWnd;
|
|
|
|
|
|
|
|
|
|
|
|
hInst = hInstance; // <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
|
|
|
|
|
|
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
|
|
|
|
|
|
CW_USEDEFAULT, 0, 1600, 900, NULL, NULL, hInstance, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
if (!hWnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
g_hWnd = hWnd;
|
|
|
|
|
|
|
|
|
|
|
|
ShowWindow(hWnd, nCmdShow);
|
|
|
|
|
|
UpdateWindow(hWnd);
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20>Լ<EFBFBD>: WndProc(HWND, UINT, WPARAM, LPARAM)
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>: <20><> â<><C3A2> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
//
|
|
|
|
|
|
// WM_COMMAND - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1> <20><EFBFBD><DEB4><EFBFBD> ó<><C3B3><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
// WM_PAINT - <20><> â<><C3A2> <20><EFBFBD><D7B8>ϴ<EFBFBD>.
|
|
|
|
|
|
// WM_DESTROY - <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20>Խ<EFBFBD><D4BD>ϰ<EFBFBD> <20><>ȯ<EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
PAINTSTRUCT ps;
|
|
|
|
|
|
HDC hdc;
|
|
|
|
|
|
|
|
|
|
|
|
switch (message)
|
|
|
|
|
|
{
|
|
|
|
|
|
case WM_KEYDOWN:
|
|
|
|
|
|
switch( wParam )
|
|
|
|
|
|
{
|
|
|
|
|
|
case 'X':
|
|
|
|
|
|
g_hTerrain->UpdateHeight( 0, 0, 128, 128 );
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 'C':
|
|
|
|
|
|
g_hTerrain->UpdateLayer( 0, 100, 30, 125 );
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 'Z':
|
|
|
|
|
|
// g_hTerrain->ChangeBlockType( TT_CLIFF );
|
|
|
|
|
|
// ReinitializeEngine( 1024, 768 );
|
|
|
|
|
|
// g_hTerrain->SetTextureDistance( 3, 10000.0f );
|
|
|
|
|
|
// g_hTerrain->UpdateTextureCoord( 0, 0, 10, 10 );
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case WM_LBUTTONDOWN:
|
|
|
|
|
|
{
|
|
|
|
|
|
EtVector3 PickPos;
|
|
|
|
|
|
POINT ptCursor;
|
|
|
|
|
|
GetCursorPos( &ptCursor );
|
|
|
|
|
|
ScreenToClient( g_hWnd, &ptCursor );
|
|
|
|
|
|
|
|
|
|
|
|
// g_hPickObj = Pick( ptCursor.x, ptCursor.y );
|
|
|
|
|
|
/* if( g_hTerrain )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_hTerrain->Pick( ptCursor.x, ptCursor.y, PickPos );
|
|
|
|
|
|
}*/
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case WM_LBUTTONUP:
|
|
|
|
|
|
{
|
|
|
|
|
|
g_hPickObj.Identity();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case WM_MOUSEMOVE:
|
|
|
|
|
|
POINT CurPoint;
|
|
|
|
|
|
|
|
|
|
|
|
CurPoint.x = LOWORD( lParam );
|
|
|
|
|
|
CurPoint.y = HIWORD( lParam );
|
|
|
|
|
|
if( wParam == MK_LBUTTON )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.RotateYawByWorld( ( float )( CurPoint.x - g_MousePoint.x ) );
|
|
|
|
|
|
g_CameraCross.RotatePitch( ( float )( CurPoint.y - g_MousePoint.y ) );
|
|
|
|
|
|
}
|
|
|
|
|
|
else if( wParam == MK_RBUTTON )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.MoveRightLeft( ( float )( g_MousePoint.x - CurPoint.x ) );
|
|
|
|
|
|
g_CameraCross.MoveUpDown( ( float )( CurPoint.y - g_MousePoint.y ) );
|
|
|
|
|
|
}
|
|
|
|
|
|
g_MousePoint = CurPoint;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case WM_MOUSEWHEEL:
|
|
|
|
|
|
if( HIWORD( wParam ) - WHEEL_DELTA > 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.MoveFrontBack( -20 );
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
g_CameraCross.MoveFrontBack( 20 );
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case WM_PAINT:
|
|
|
|
|
|
hdc = BeginPaint(hWnd, &ps);
|
|
|
|
|
|
// TODO: <20><><EFBFBD> <20><EFBFBD><D7B8><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|
|
|
|
|
EndPaint(hWnd, &ps);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case WM_DESTROY:
|
|
|
|
|
|
FinalizeEngine();
|
|
|
|
|
|
CEtResource::DeleteAllObject();
|
|
|
|
|
|
PostQuitMessage(0);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
{
|
|
|
|
|
|
/* if( CEtUIDialog::StaticMsgProc( hWnd, message, wParam, lParam ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
else*/
|
|
|
|
|
|
{
|
|
|
|
|
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* if( CEtUIDialog::StaticMsgProc( hWnd, message, wParam, lParam ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
UNREFERENCED_PARAMETER(lParam);
|
|
|
|
|
|
switch (message)
|
|
|
|
|
|
{
|
|
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
|
return (INT_PTR)TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
|
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
|
|
|
|
|
|
{
|
|
|
|
|
|
EndDialog(hDlg, LOWORD(wParam));
|
|
|
|
|
|
return (INT_PTR)TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
return (INT_PTR)FALSE;
|
|
|
|
|
|
}
|