⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brush.h

📁 3D游戏开发需要用到BSP树来经行场景渲染的管理。本代码包含完整的BSP及文件生成实现
💻 H
字号:
#pragma once

#include "map.h"
#include "memalloc.h"
#include "math.h"
#include "winding.h"
#include "vectoraligned.h"
#include "vector.h"
#include "string.h"

#include "bspdata.h"
#include "surfaceflags.h"

struct TexVecs {
	float offset[2];
	float rot;
	float scale[2];
};	

class CMapBrushSide : public CMemObj {
friend class CMapBrush;
public:
				CMapBrushSide();
				CMapBrushSide(CMapBrushSide* b);
				CMapBrushSide(vec4 points[3]);

	void		SetPlane(vec4 &plane);
	void		SetPlane(vec4 points[3]);
	void		SetShader(CMapShader &s);
	void		SetTexMatrix(TexVecs &t);
	vec4		TransformTexCoord(vec4& w_pos);
	int			GetIPlane();
	sPlane*		GetPlane();
	CMapShader*	GetShader();

private:
	vec4		tex_matrix[2];
	int			iplane;
	int			ishader;
};

inline CMapBrushSide::CMapBrushSide() {
}

inline CMapBrushSide::CMapBrushSide(CMapBrushSide* b):
ishader(b->ishader), iplane(b->iplane) {
	tex_matrix[0] = b->tex_matrix[0];
	tex_matrix[1] = b->tex_matrix[1];
}

inline CMapBrushSide::CMapBrushSide(vec4 points[3]) {
	SetPlane(points);
}

inline void CMapBrushSide::SetShader(CMapShader &s) {
	ishader = g_curMap->AddShader(s);
}

inline void	CMapBrushSide::SetPlane(vec4 &plane) {
	iplane = g_curMap->AddPlane(plane);
}

inline sPlane* CMapBrushSide::GetPlane() {
	return g_curMap->GetPlane(iplane);
}

inline CMapShader* CMapBrushSide::GetShader() {
	return g_curMap->GetShader(ishader);
}

inline int CMapBrushSide::GetIPlane() {
	return iplane;
}

class CMapBrush {
public:
			CMapBrush();
			~CMapBrush();
	int		Parse();

	CAlignedVec<CMapBrushSide>	sides;
};

inline CMapBrush::CMapBrush() {
	sides.Reserve(6);
}

inline CMapBrush::~CMapBrush() {
	sides.Clear();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -