mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-26 23:47:11 -04:00
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef C_M3D_G_CYL_H
|
|
#define C_M3D_G_CYL_H
|
|
|
|
#include "SSystem/SComponent/c_xyz.h"
|
|
#include "global.h"
|
|
|
|
// Cylinder
|
|
struct cM3dGCylS {
|
|
/* 0x00 */ Vec mCenter;
|
|
/* 0x0C */ f32 mRadius;
|
|
/* 0x10 */ f32 mHeight;
|
|
}; // Size = 0x14
|
|
|
|
class cM3dGSph;
|
|
|
|
class cM3dGCyl {
|
|
public:
|
|
/* 0x00 */ cXyz mCenter;
|
|
/* 0x0C */ f32 mRadius;
|
|
/* 0x10 */ f32 mHeight;
|
|
/* 0x14 vtable */
|
|
cM3dGCyl() {}
|
|
cM3dGCyl(const cXyz*, f32, f32);
|
|
virtual ~cM3dGCyl() {}
|
|
void SetC(const cXyz& pos);
|
|
void SetH(f32 h);
|
|
void SetR(f32 r);
|
|
inline void Set(const cM3dGCylS & src) {
|
|
SetC(src.mCenter);
|
|
SetR(src.mRadius);
|
|
SetH(src.mHeight);
|
|
}
|
|
bool cross(const cM3dGSph*, cXyz*) const;
|
|
bool cross(const cM3dGCyl*, cXyz*) const;
|
|
bool cross(const cM3dGSph*, f32*) const;
|
|
bool cross(const cM3dGCyl*, f32*) const;
|
|
const cXyz* GetCP(void) const { return &mCenter; }
|
|
f32 GetR(void) const { return mRadius; }
|
|
f32 GetH(void) const { return mHeight; }
|
|
cXyz& GetC() { return mCenter; }
|
|
}; // Size = 0x18
|
|
|
|
STATIC_ASSERT(0x18 == sizeof(cM3dGCyl));
|
|
|
|
#endif /* C_M3D_G_CYL_H */
|