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

📄 _collide.h

📁 《光线引擎演示程序》执行程序+源代码,《光线引擎演示程序》执行程序+源代码
💻 H
字号:
/*==========================================================================;
 *
 *  光线游戏引擎(Light Game Engine)
 *
 *  版权所有 (C) 2005-2007 康 旭。 保留所有权利。
 *  Copyright (C) KangXu.  All Rights Reserved.
 *
 *  文件:   collide.h
 *  内容:   碰撞检测函数
 *
 ****************************************************************************/


/*! \file collide.h * 碰撞检测函数. * 此文件是碰撞检测函数头文件. */

// 碰撞检测构建结构
typedef struct build_s
{
	int target; // 构建目标类型

	// 网格
	struct mesh_s
	{		int     NumTri;       // 三角形数		int     NumVert;      // 顶点数		long  * TriIndices;   // 三角形索引列表		float * Verts;        // 顶点列表		int     TriStride;    // 三角形步长
		int     VertexStride; // 顶点步长
	} mesh;

	// AABB 包围盒
	struct aabb_s
	{
		vec3_t min, max;
	} aabb;

	// 胶囊
	struct capsule_s
	{
		vec3_t p1, p2;
		float  radius;
	} capsule;

} build_t;


/*! \class LightCollide *  \brief 碰撞检测类  * *  本类负责模型和场景的碰撞检测。 *  每个 LightCollide 实例都必须通过 LightEngine 类的 NewCollide 方法分配。  */

class LightCollide
{

public:
	/*! \fn bool Build ( int target, int type, build_t *build ) = 0	 *  \brief 构建碰撞检测数据	 *	 *  构建碰撞检测数据	 *	 *  \param int target 要构建的目标	 *	 *  \param int type 要构建目标的类型	 *	 *  \param build_t *build 构建碰撞检测的数据	 *	 *  \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。
	 *	 *  \see
	 */
	virtual bool Build ( int target, int type, build_t *build ) = 0;	
	/*! \fn bool Collide ( matrix_t world0, matrix_t world1 ) = 0	 *  \brief 对两个目标进行碰撞检测	 *	 *  对两个目标进行碰撞检测	 *	 *  \param matrix_t world0 第一个目标的矩阵,如果为 NULL,则使用单位矩阵	 *	 *  \param matrix_t world1 第二个目标的矩阵,如果为 NULL,则使用单位矩阵	 *	 *  \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。	 *	 *  \see 
	 */
	virtual bool Collide ( matrix_t world0, matrix_t world1 ) = 0;

	/*! \fn bool GetContactStatus ( void ) = 0	 *  \brief 查询两个目标是否发生碰撞	 *	 *  查询两个目标是否发生碰撞	 *	 *  \param  无	 *	 *  \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。
	 */
	virtual bool GetContactStatus ( void ) = 0;

	/*! \fn int GetNumPairs ( void ) = 0	 *  \brief 查询发生碰撞的三角形数	 *	 *  查询发生碰撞的三角形数	 *	 *  \param  无	 *	 *  \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。
	 */
	virtual int GetNumPairs ( void ) = 0;

	/*! \fn int GetPairs ( void ) = 0	 *  \brief 查询发生碰撞的三角形	 *	 *  查询发生碰撞的三角形	 *	 *  \param  无	 *	 *  \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。
	 */
	virtual int GetPairs ( void ) = 0;

};

⌨️ 快捷键说明

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