123
This commit is contained in:
37
CryPhysics/raygeom.h
Normal file
37
CryPhysics/raygeom.h
Normal 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
|
||||
Reference in New Issue
Block a user