forked from metin2/client
83 lines
3.7 KiB
C++
83 lines
3.7 KiB
C++
#pragma once
|
|
|
|
#include "GrpCollisionObject.h"
|
|
#include "../SphereLib/frustum.h"
|
|
|
|
|
|
class CScreen : public CGraphicCollisionObject
|
|
{
|
|
public:
|
|
CScreen();
|
|
virtual ~CScreen();
|
|
|
|
void ClearDepthBuffer();
|
|
void Clear();
|
|
bool Begin();
|
|
void End();
|
|
void Show(HWND hWnd = NULL);
|
|
void Show(RECT * pSrcRect);
|
|
void Show(RECT * pSrcRect, HWND hWnd);
|
|
|
|
void RenderLine2d(float sx, float sy, float ex, float ey, float z=0.0f);
|
|
void RenderBox2d(float sx, float sy, float ex, float ey, float z=0.0f);
|
|
void RenderBar2d(float sx, float sy, float ex, float ey, float z=0.0f);
|
|
void RenderGradationBar2d(float sx, float sy, float ex, float ey, DWORD dwStartColor, DWORD dwEndColor, float ez=0.0f);
|
|
void RenderCircle2d(float fx, float fy, float fz, float fRadius, int iStep = 50);
|
|
void RenderCircle3d(float fx, float fy, float fz, float fRadius, int iStep = 50);
|
|
|
|
void RenderLine3d(float sx, float sy, float sz, float ex, float ey, float ez);
|
|
void RenderBox3d(float sx, float sy, float sz, float ex, float ey, float ez);
|
|
void RenderBar3d(float sx, float sy, float sz, float ex, float ey, float ez);
|
|
void RenderBar3d(const D3DXVECTOR3 * c_pv3Positions);
|
|
void RenderGradationBar3d(float sx, float sy, float sz, float ex, float ey, float ez, DWORD dwStartColor, DWORD dwEndColor);
|
|
|
|
void RenderLineCube(float sx, float sy, float sz, float ex, float ey, float ez);
|
|
void RenderCube(float sx, float sy, float sz, float ex, float ey, float ez);
|
|
void RenderCube(float sx, float sy, float sz, float ex, float ey, float ez, D3DXMATRIX matRotation);
|
|
void RenderTextureBox(float sx, float sy, float ex, float ey, float z=0.0f, float su=0.0f, float sv=0.0f, float eu=1.0f, float ev=1.0f);
|
|
void RenderBillboard(D3DXVECTOR3 * Position, D3DXCOLOR & Color);
|
|
|
|
void DrawMinorGrid(float xMin, float yMin, float xMax, float yMax, float xminorStep, float yminorStep, float zPos=0);
|
|
void DrawGrid(float xMin, float yMin, float xMax, float yMax, float xmajorStep, float ymajorStep, float xminorStep, float yminorStep, float zPos=0);
|
|
|
|
void RenderD3DXMesh(LPD3DXMESH lpMesh, const D3DXMATRIX * c_pmatWorld, float fx, float fy, float fz, float fRadius, D3DFILLMODE d3dFillMode);
|
|
void RenderSphere(const D3DXMATRIX * c_pmatWorld, float fx, float fy, float fz, float fRadius, D3DFILLMODE d3dFillMode = D3DFILL_SOLID);
|
|
void RenderCylinder(const D3DXMATRIX * c_pmatWorld, float fx, float fy, float fz, float fRadius, float fLength, D3DFILLMODE d3dFillMode = D3DFILL_SOLID);
|
|
|
|
void SetColorOperation();
|
|
void SetDiffuseOperation();
|
|
void SetBlendOperation();
|
|
void SetOneColorOperation(D3DXCOLOR & rColor);
|
|
void SetAddColorOperation(D3DXCOLOR & rColor);
|
|
void SetDiffuseColor(DWORD diffuseColor);
|
|
void SetDiffuseColor(float r, float g, float b, float a=1.0f);
|
|
void SetClearColor(float r, float g, float b, float a=1.0f);
|
|
void SetClearDepth(float depth);
|
|
void SetClearStencil(DWORD stencil);
|
|
|
|
void SetCursorPosition(int x, int y, int hres, int vres); // creates picking ray
|
|
bool GetCursorPosition(float* px, float* py, float* pz);
|
|
bool GetCursorXYPosition(float* px, float* py);
|
|
bool GetCursorZPosition(float* pz);
|
|
void GetPickingPosition(float t, float* x, float* y, float* z);
|
|
void ProjectPosition(float x, float y, float z, float * pfX, float * pfY);
|
|
void ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ);
|
|
void UnprojectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ);
|
|
|
|
BOOL IsLostDevice();
|
|
BOOL RestoreDevice();
|
|
|
|
void BuildViewFrustum();
|
|
|
|
static void Identity();
|
|
static Frustum & GetFrustum() { return ms_frustum; }
|
|
|
|
protected:
|
|
static DWORD ms_diffuseColor;
|
|
static DWORD ms_clearColor;
|
|
static DWORD ms_clearStencil;
|
|
static float ms_clearDepth;
|
|
|
|
static Frustum ms_frustum;
|
|
};
|