📄 _collide.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 + -