struct RectF { float x, y, w, h; struct RectI { int x, y, w, h; }; struct Line { Vec3 pointonline; Vec3 direction; }; struct Ray { Vec3 origin; Vec3 direction; }; template <typename F> struct Lineseg_tpl { Vec3_tplstart; Vec3_tpl end; }; template <typename F> struct Triangle_tpl { Vec3_tpl v0, v1, v2; }; struct Cone { Vec3 mTip; Vec3 mDir; Vec3 mBase; float mHeight; float mBaseRadius; }; struct AABB { Vec3 min; Vec3 max; enum type_reset { RESET }; template <typename F> struct OBB_tpl { Matrix33 m33; Vec3 h; Vec3 c; }; struct Sphere { Vec3 center; float radius; }; struct HWVSphere { hwvec3 center; simdf radius; }; struct AAEllipsoid { Vec3 center; Vec3 radius_vec; }; struct Ellipsoid { Matrix34 ExtensionPos; }; template <class Num> struct TRect_tpl { Vec Min, Max; }; class Velocity3; }; };
Cry_Geo.h
struct AABB { Vec3 min; Vec3 max; enum type_reset { RESET }; template <typename F> struct OBB_tpl { Matrix33 m33; Vec3 h; Vec3 c; }; struct Sphere { Vec3 center; float radius; }; struct HWVSphere { hwvec3 center; simdf radius; }; struct AAEllipsoid { Vec3 center; Vec3 radius_vec; }; struct Ellipsoid { Matrix34 ExtensionPos; }; template <class Num> struct TRect_tpl { Vec Min, Max; }; class Velocity3; };
Cry_Geo.h
struct AABB
struct AAEllipsoid { Vec3 center; Vec3 radius_vec; };
Cry_Geo.h
struct AAEllipsoid
Vec3 center;
Vec3 radius_vec;
inline void operator ()(const Vec3 & c, const Vec3 & rv);
~AAEllipsoid();
inline AAEllipsoid(); inline AAEllipsoid(const Vec3 & c, const Vec3 & rv);
default AAEllipsoid constructor (without initialisation)
struct Ellipsoid { Matrix34 ExtensionPos; };
Cry_Geo.h
struct Ellipsoid
Matrix34 ExtensionPos;
inline void operator ()(const Matrix34 & ep);
~Ellipsoid();
inline Ellipsoid(); inline Ellipsoid(const Matrix34 & ep);
default Ellipsoid constructor (without initialisation)
Cry_Geo.h
hwvec3 center;
simdf radius;
HWVSphere(const Sphere& sp);
HWVSphere(const hwvec3 & c, const simdf & r);
Cry_Geo.h
struct OBB
Vec3 c;
center of obb
Vec3 h;
half-length-vector
Matrix33 m33;
orientation vectors
~OBB_tpl();
inline OBB_tpl();
default OBB constructor (without initialisation)
void SetOBB(const Matrix33& matrix, const Vec3& hlv, const Vec3& center);
void SetOBBfromAABB(const Matrix33& mat33, const AABB& aabb);
void SetOBBfromAABB(const Quat& q, const AABB& aabb);
Cry_Geo.h
struct Sphere
Vec3 center;
float radius;
void operator ()(const Vec3& c, float r);
Sphere();
Sphere(const Vec3& c, float r);
Cry_Geo.h
struct TRect
Vec Max;
Vec Min;
inline TRect_tploperator *(Num k) const;
inline TRect_tploperator /(Num k) const;
inline Vec GetDim() const;
inline Num GetHeight() const;
inline Num GetWidth() const;
inline bool InRect(const TRect_tpl& rc) const;
inline bool InRect(Vec pt) const;
inline bool Intersects(const TRect_tpl& rc) const;
inline bool IsEmpty() const;
inline bool IsEqual(const TRect_tpl& rc) const;
inline TRect_tpl& SetEmpty();
inline TRect_tpl();
inline TRect_tpl(Num x1, Num y1, Num x2, Num y2);
inline TRect_tpl(const TRect_tpl& rc);
typedef Vec2_tplVec;
enum type_reset { RESET };
Cry_Geo.h
class Velocity3;
Cry_Geo.h
Manage linear and rotational 3D velocity in a class
Vec3 vLin;
Vec3 vRot;
void operator *=(float f);
void operator +=(Velocity3 const& vv);
void FromDelta(QuatT const& loc0, QuatT const& loc1, float fTime);
void Interp(Velocity3 const& vv, float f);
Velocity3();
Velocity3(Vec3 const& vLin);
Velocity3(type_zero);
Vec3 VelocityAt(Vec3 const& vPosRel) const;
Vec3 max;
Vec3 min;
AABB(); explicit AABB(float radius); explicit AABB(const Vec3& v); AABB(const Vec3& v, float radius); AABB(const Vec3 & vmin, const Vec3 & vmax); AABB(const AABB & aabb); inline AABB(const Vec3* points, int num);
default AABB constructor (without initialisation)
AABB(type_reset);
AABB aabb(RESET) generates a reset aabb
void Add(const AABB& bb);
void Add(const Vec3 & v);
inline void Add(const Vec3& v, float radius);
inline void AddToBounds(const Vec3& v, Vec3& mins, Vec3& maxs);
inline void Augment(AABB const& bb);
inline float CalcArea(const Vec3 * vertices, int numvertices, const Vec3 & normal);
! calc the area of a polygon giving a list of vertices and normal
void ClipMoveToBox(AABB const& bb);
void ClipToBox(AABB const& bb);
bool ContainsBox(AABB const& b) const;
bool ContainsBox2D(AABB const& b) const;
inline void Expand(Vec3 const& v);
Vec3 GetCenter() const;
float GetDistance(Vec3 const& v) const;
float GetDistanceSqr(Vec3 const& v) const;
float GetRadius() const;
float GetRadiusSqr() const;
Vec3 GetSize() const;
float GetVolume() const;
bool IsContainPoint(const Vec3 & pos) const;
! Check if this bounding box contains a point within itself.
bool IsContainSphere(const Vec3 & pos, float radius) const;
! Check if this bounding box contain sphere within itself.
bool IsEmpty() const;
! Check if bounding box is empty (Zero volume).
bool IsEquivalent(const AABB& a, const AABB& b, float epsilon = VEC_EPSILON);
inline bool IsIntersectBox(const AABB & b) const;
Check two bounding boxes for intersection.
inline bool IsMaxBB(const Vec3& v);
! checks if this has been set to maxBB
inline bool IsMinBB(const Vec3& v);
! checks if this has been set to minBB
bool IsNonZero() const;
! Check if bounding box has valid, non zero volume
bool IsOverlapSphereBounds(const Vec3 & pos, float radius) const;
bool IsReset() const;
float IsResetSel(float ifReset, float ifNotReset) const;
inline void Move(const Vec3& v);
void Reset();
template <typename F> void SetAABBfromOBB(const OBB_tpl& obb);
template <typename F> void SetAABBfromOBB(const Vec3& wpos, const OBB_tpl& obb, f32 scaling = 1.0f);
!
*
*
inline Vec3 SetMaxBB();
inline Vec3 SetMinBB();
void SetTransformedAABB(const Matrix34& m34, const AABB& aabb);
!
*
*
void SetTransformedAABB(const QuatT& qt, const AABB& aabb);
typedef OBB_tplOBB;
typedef TRect_tpl<float> Rectf;
typedef TRect_tpl<int> Recti;
typedef Triangle_tplTriangle;
typedef Triangle_tplTriangle_f64;
struct Cone { Vec3 mTip; Vec3 mDir; Vec3 mBase; float mHeight; float mBaseRadius; };
Cry_Geo.h
struct Cone
Vec3 mBase;
float mBaseRadius;
Vec3 mDir;
float mHeight;
Vec3 mTip;
Cone();
Cone(const Vec3& tip, const Vec3& dir, float height, float baseRadius);
struct Line { Vec3 pointonline; Vec3 direction; };
Cry_Geo.h
struct Line
Vec3 direction;
caution: the direction is important for any intersection test
Vec3 pointonline;
inline void operator ()(const Vec3 & o, const Vec3 & d);
~Line();
inline Line(); inline Line(const Vec3 & o, const Vec3 & d);
default Line constructor (without initialisation)
Cry_Geo.h
struct Lineseg
Vec3_tplend;
Vec3_tplstart;
~Lineseg_tpl();
Vec3 GetPoint(F t) const;
default Lineseg constructor (without initialisation)
Cry_Geo.h
struct Ray
Vec3 direction;
Vec3 origin;
inline void operator ()(const Vec3 & o, const Vec3 & d);
~Ray();
inline Ray(); inline Ray(const Vec3 & o, const Vec3 & d);
default Ray constructor (without initialisation)
Cry_Geo.h
int h;
int w;
int x;
int y;
_inline void Add(RectI rcAdd);
_inline void Add(int inX, int inY, int inW, int inH);
RectI();
RectI(int inX, int inY, int inW, int inH);
Cry_Geo.h
struct Triangle
Vec3_tplv0;
Vec3_tplv1;
Vec3_tplv2;
~Triangle_tpl();
F GetArea() const;
Vec3_tplGetNormal() const;
default Lineseg constructor (without initialisation)
float h;
float w;
float x;
float y;
RectF();
typedef Lineseg_tpl<float> Lineseg;
typedef Lineseg_tplLinesegr;