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

📄 bezobj.h

📁 是3D游戏一书中所讲的游戏引擎fly3D 包括fly3D引擎的源码及应用此引擎开发出来的游戏实例 有fly3D引擎的教程,易于step by step跟学
💻 H
字号:
enum classes_types
{
	TYPE_BEZIER_EXTRUDE=0x130,
	TYPE_BEZIER_LOFT,
	TYPE_BEZIER_SURFACE,
};

#define MAX_CURVE_VERTS 64
#define MAX_CURVE_LMPIXELS 32

class bezier_extrude : public bsp_object
{
public:

	bezier_curve *curve;
	mesh *objmesh;
	stripfan_mesh *sfmesh;

	float width;
	int strippic,fanpic;
	float tileu,tilev,tilew;
	int lm[3];

	void build_stripfan();
	int step(int dt) { return 0; };
	void draw();
	int get_custom_param_desc(int i,param_desc *pd);
	int message(vector& p,float rad,int msg,int param,void *data);
	void illuminate_edge(vector& p,float rad,vector& color,int shadows);
	void init();
	bsp_object *clone();
	mesh *get_mesh() { return objmesh; };

	bezier_extrude() 
	{ 
		type=TYPE_BEZIER_EXTRUDE; 
		objmesh=0;
		sfmesh=0;
	};
	~bezier_extrude() 
	{ 
		if (objmesh) delete objmesh;
		if (sfmesh) delete sfmesh;
	};
};

class bezier_loft : public bsp_object
{
public:

	bezier_curve *shape,*path;
	bezier_patch patch;
	mesh *objmesh;
	stripfan_mesh *sfmesh;

	int texpic,lm;
	float tileu,tilev;

	int create_normal_map(float scale);
	void build_stripfan();
	int step(int dt) { return 0; };
	void draw();
	int get_custom_param_desc(int i,param_desc *pd);
	int message(vector& p,float rad,int msg,int param,void *data);
	void init();
	bsp_object *clone();
	mesh *get_mesh() { return objmesh; };
	void illuminate_patch(vector& p,float rad,vector& color,int shadows);

	bezier_loft() 
	{ 
		type=TYPE_BEZIER_LOFT; 
		objmesh=0;
		sfmesh=0;
	};
	~bezier_loft() 
	{ 
		if (objmesh) 
			delete objmesh;
	};
};

class bezier_surface : public bsp_object
{
public:
	bezier_patch *patch;
	mesh *objmesh;
	
	int step(int dt) { return 0; };
	mesh *get_mesh() { return objmesh; };
	void draw();
	void init();
	void build_stripfan();
	int get_custom_param_desc(int i,param_desc *pd);
	int message(vector& p,float rad,int msg,int param,void *data);
	void illuminate_patch(vector& p,float rad,vector& color,int shadows);
	bsp_object *clone();

	bezier_surface() 
	{ 
		type=TYPE_BEZIER_SURFACE;
		objmesh=0;
	};
	~bezier_surface() 
	{ 
		if (objmesh)
			delete objmesh;
	}
};

class bezier_extrude_desc : public class_desc
{
public:
	void *create() { return new bezier_extrude; };
	char *get_name() { return "bezextrude"; };
	int get_type() { return TYPE_BEZIER_EXTRUDE; };
};

class bezier_loft_desc : public class_desc
{
public:
	void *create() { return new bezier_loft; };
	char *get_name() { return "bezloft"; };
	int get_type() { return TYPE_BEZIER_LOFT; };
};

class bezier_surface_desc : public class_desc
{
public:
	void *create() { return new bezier_surface; };
	char *get_name() { return "bezsurface"; };
	int get_type() { return TYPE_BEZIER_SURFACE; };
};

⌨️ 快捷键说明

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