This commit is contained in:
romkazvo
2023-08-07 19:29:24 +08:00
commit 34d6c5d489
4832 changed files with 1389451 additions and 0 deletions

37
CryPhysics/raygeom.h Normal file
View File

@@ -0,0 +1,37 @@
#ifndef raygeom_h
#define raygeom_h
#pragma once
class CRayGeom : public CGeometry {
public:
CRayGeom() { m_iCollPriority=0; m_Tree.Build(this); m_Tree.SetRay(&m_ray); m_minVtxDist=1.0f; }
CRayGeom(const ray *pray) {
m_iCollPriority=0; m_ray.origin = pray->origin; m_ray.dir = pray->dir; m_dirn = pray->dir.normalized();
m_Tree.Build(this); m_Tree.SetRay(&m_ray); m_minVtxDist=1.0f;
}
CRayGeom(const vectorf &origin, const vectorf &dir) {
m_iCollPriority=0; m_ray.origin = origin; m_ray.dir = dir; m_dirn = dir.normalized();
m_Tree.Build(this); m_Tree.SetRay(&m_ray); m_minVtxDist=1.0f;
}
CRayGeom *CreateRay(const vectorf &origin, const vectorf &dir, const vectorf *pdirn=0) {
m_ray.origin = origin; m_ray.dir = dir; m_dirn = pdirn ? *pdirn : dir.normalized(); return this;
}
virtual int GetType() { return GEOM_RAY; }
virtual int IsAPrimitive() { return 1; }
virtual void GetBBox(box *pbox);
virtual int PrepareForIntersectionTest(geometry_under_test *pGTest, CGeometry *pCollider,geometry_under_test *pGTestColl, bool bKeepPrevContacts);
virtual int RegisterIntersection(primitive *pprim1,primitive *pprim2, geometry_under_test *pGTest1,geometry_under_test *pGTest2,
prim_inters *pinters);
virtual int GetPrimitiveList(int iStart,int nPrims, int typeCollider,primitive *pCollider,int bColliderLocal,
geometry_under_test *pGTest,geometry_under_test *pGTestOp, primitive *pRes,short *pResId);
virtual int PreparePrimitive(geom_world_data *pgwd,primitive *&pprim);
virtual CBVTree *GetBVTree() { return &m_Tree; }
virtual int GetPrimitive(int iPrim, primitive *pprim) { *(ray*)pprim = m_ray; return sizeof(ray); }
ray m_ray;
vectorf m_dirn;
CRayBV m_Tree;
};
#endif