mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-05 03:07:40 -04:00
64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
#ifndef C_M3D_G_SPH_H_
|
|
#define C_M3D_G_SPH_H_
|
|
|
|
#include "SSystem/SComponent/c_m3d.h"
|
|
#include "SSystem/SComponent/c_xyz.h"
|
|
#include "global.h"
|
|
|
|
class cM3dGCyl;
|
|
|
|
struct cM3dGSphS {
|
|
/* 0x0 */ Vec mCenter;
|
|
/* 0xC */ f32 mRadius;
|
|
}; // Size: 0x10
|
|
|
|
class cM3dGSph {
|
|
private:
|
|
public:
|
|
/* 0x00 */ cXyz mCenter;
|
|
/* 0x0C */ f32 mRadius;
|
|
/* 0x10 vtable */
|
|
|
|
cM3dGSph() {}
|
|
virtual ~cM3dGSph() {}
|
|
void SetC(const cXyz&);
|
|
void SetC(f32, f32, f32) {}
|
|
void SetR(f32);
|
|
void Set(const cM3dGSphS & src) {
|
|
SetC(src.mCenter);
|
|
SetR(src.mRadius);
|
|
}
|
|
void Set(const cXyz& srcCenter, f32 srcRadius) {
|
|
SetC(srcCenter);
|
|
SetR(srcRadius);
|
|
}
|
|
bool Cross(const cM3dGCps* cps, cXyz* dst) const {
|
|
return cM3d_Cross_CpsSph(*cps, *this, dst);
|
|
}
|
|
bool Cross(const cM3dGTri& tri, cXyz* dst) const {
|
|
return cM3d_Cross_SphTri(this, &tri, dst);
|
|
}
|
|
bool cross(const cM3dGCyl*, cXyz*) const;
|
|
bool cross(const cM3dGSph*, cXyz*) const;
|
|
bool cross(const cM3dGSph*, f32*) const;
|
|
bool cross(const cM3dGCyl* cyl, f32* out) const {
|
|
cXyz temp;
|
|
return cM3d_Cross_CylSph(cyl, this, &temp, out);
|
|
}
|
|
bool cross(const cM3dGTri *param_1) const {
|
|
return cM3d_Cross_SphTri(this, param_1);
|
|
}
|
|
const cXyz& GetC() const { return mCenter; }
|
|
cXyz& GetC() { return mCenter; }
|
|
const cXyz* GetCP() const { return &mCenter; }
|
|
cXyz* GetCP() { return &mCenter; }
|
|
const f32 GetR() const { return mRadius; }
|
|
f32 GetCX() const { return mCenter.x; }
|
|
f32 GetCY() const { return mCenter.y; }
|
|
f32 GetCZ() const { return mCenter.z; }
|
|
}; // Size = 0x14
|
|
|
|
STATIC_ASSERT(0x14 == sizeof(cM3dGSph));
|
|
|
|
#endif
|