Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
150 lines
3.6 KiB
C++
150 lines
3.6 KiB
C++
// WBLightMap.h: interface for the WBLightMap class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_WBLIGHTMAP_H__4F1BB2A4_C09E_11D7_8C7F_0040F41B957B__INCLUDED_)
|
|
#define AFX_WBLIGHTMAP_H__4F1BB2A4_C09E_11D7_8C7F_0040F41B957B__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
#include "WBValue.h"
|
|
#include "WBLightMapTex.h"
|
|
|
|
#define WB_FPBITS(fp) (*(int *)&(fp))
|
|
//! returns the absolute value of a floating point number in bitwise form
|
|
#define WB_FPABSBITS(fp) (WB_FPBITS(fp)&0x7FFFFFFF)
|
|
//! returns the signal bit of a floating point number
|
|
#define WB_FPSIGNBIT(fp) (WB_FPBITS(fp)&0x80000000)
|
|
//! returns the absolute value of a floating point number
|
|
#define WB_FPABS(fp) (*((int *)&fp)=WB_FPABSBITS(fp))
|
|
#define WBSMALL 1.0e-4f
|
|
|
|
class WBLightVertex {
|
|
public:
|
|
D3DXVECTOR3 m_vecPos;
|
|
D3DXVECTOR3 m_vecColor;
|
|
D3DXVECTOR2 m_vecTexcoord;
|
|
|
|
WBLightVertex() {
|
|
m_vecPos = D3DXVECTOR3(0.0f,0.0f,0.0f);
|
|
m_vecColor = D3DXVECTOR3(0.0f,0.0f,0.0f);
|
|
m_vecTexcoord = D3DXVECTOR2(0.0f,0.0f);
|
|
}
|
|
};
|
|
class WBLightMapPlane {
|
|
public:
|
|
float m_fDist;
|
|
D3DXVECTOR3 m_vecNormal;
|
|
D3DXVECTOR3 m_vecVertex;
|
|
|
|
};
|
|
|
|
class WBLightMapFace {
|
|
public:
|
|
bool m_bSetArea;
|
|
float m_fArea;
|
|
|
|
int m_iObject;
|
|
|
|
int m_iVerts;
|
|
int m_iStartIndex;
|
|
|
|
int m_iIndex[3];
|
|
|
|
int m_iLightMapId;
|
|
|
|
int m_iPlaneVertex;
|
|
D3DXVECTOR3 *m_pPlaneVertex;
|
|
D3DXVECTOR3 *m_pEdge;
|
|
float *m_pEdgeValue;
|
|
|
|
float d0;
|
|
float m_fDist;
|
|
|
|
WBLightVertex *m_pVerts;
|
|
D3DXVECTOR3 m_vecNormal;
|
|
D3DXVECTOR3 m_vecMin;
|
|
D3DXVECTOR3 m_vecMax;
|
|
unsigned char m_ucColor[3];
|
|
|
|
WBLightMapFace() {
|
|
m_bSetArea = false;
|
|
|
|
m_iVerts = 0;
|
|
m_iStartIndex = 0;
|
|
|
|
m_iLightMapId = -1;
|
|
m_pVerts = NULL;
|
|
m_pEdgeValue = NULL;
|
|
m_pEdge = NULL;
|
|
m_pPlaneVertex = NULL;
|
|
m_iPlaneVertex = 0;
|
|
|
|
|
|
|
|
}
|
|
~WBLightMapFace() {
|
|
if(m_pVerts != NULL)
|
|
delete[] m_pVerts;
|
|
if(m_pEdge != NULL)
|
|
delete[] m_pEdge;
|
|
if(m_pEdgeValue != NULL)
|
|
delete[] m_pEdgeValue;
|
|
if(m_pPlaneVertex != NULL)
|
|
delete[] m_pPlaneVertex;
|
|
|
|
}
|
|
float area();
|
|
void GetMinMax();
|
|
int RayCollision(D3DXVECTOR3 vecStart,D3DXVECTOR3 vecDir,float fLength);
|
|
int RayCollision(D3DXVECTOR3 vecStart,D3DXVECTOR3 vecEnd);
|
|
int InsidePolygon(D3DXVECTOR3 vecPoint);
|
|
void CalcNormal();
|
|
|
|
};
|
|
|
|
class WBLightMap
|
|
{
|
|
public:
|
|
WBLightMap(int f,int p,int x,int y,int sx,int sy,int bp=3);
|
|
~WBLightMap();
|
|
int m_iFaceId;
|
|
D3DXVECTOR3 v0,
|
|
v1,
|
|
v2,
|
|
normal;
|
|
float det;
|
|
float uv[3][2];
|
|
|
|
int pic; //!< flyLightMapPic index
|
|
int offsetx, //!< x offset into the light map picture
|
|
offsety; //!< y offset into the light map picture
|
|
int sizex, //!< x size of the light map (no need for being power of 2)
|
|
sizey; //!< y size of the light map (no need for being power of 2)
|
|
unsigned char *bmp; //!< light map bitmap
|
|
int bytespixel, //!< number of bytes per pixel (3: RGB, 4: RGBA)
|
|
bytesx, //!< number of bytes per line (sizex*bytespixel)
|
|
bytesxy; //!< total bytes of the bitmap (bytesx*sizey)
|
|
D3DXVECTOR3 d0, //!< base value used for illumination calculations
|
|
d1, //!< base value used for illumination calculations
|
|
d2; //!< base value used for illumination calculations
|
|
|
|
|
|
void set_base(WBLightMapFace *f,WBLightMapTex *lmp,D3DXVECTOR3& pos=D3DXVECTOR3(0,0,0));
|
|
|
|
void map_point(float u, float v, D3DXVECTOR3 &point);
|
|
|
|
void map_point_local(float u, float v, D3DXVECTOR3 &p,D3DXVECTOR3 &n);
|
|
virtual void illum(D3DXVECTOR3& pos,D3DXVECTOR3& color,float radius,int shadows);
|
|
|
|
void load(WBLightMapTex *lmp);
|
|
//! Save the light map to flyLightMapPic
|
|
void save(WBLightMapTex *lmp);
|
|
|
|
|
|
|
|
};
|
|
|
|
#endif // !defined(AFX_WBLIGHTMAP_H__4F1BB2A4_C09E_11D7_8C7F_0040F41B957B__INCLUDED_)
|