Files
Client/GameTools/Zallad3D SceneClass/WBLightMap.h
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

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_)