// // Generated By: dol2asm // Translation Unit: c_xyz // #include "SSystem/SComponent/c_xyz.h" #include "SSystem/SComponent/c_math.h" #include "dol2asm.h" #include "global.h" #include "msl_c/math.h" // // Declarations: // /* 80266AE4-80266B34 0050+00 s=0 e=103 z=300 None .text __pl__4cXyzCFRC3Vec */ cXyz cXyz::operator+(const Vec& vec) const { Vec ret; PSVECAdd(this, &vec, &ret); return cXyz(ret); } /* 80266B34-80266B84 0050+00 s=0 e=196 z=1082 None .text __mi__4cXyzCFRC3Vec */ cXyz cXyz::operator-(const Vec& vec) const { Vec ret; PSVECSubtract(this, &vec, &ret); return cXyz(ret); } /* 80266B84-80266BD0 004C+00 s=1 e=99 z=158 None .text __ml__4cXyzCFf */ cXyz cXyz::operator*(f32 scale) const { Vec ret; PSVECScale(this, &ret, scale); return cXyz(ret); } inline void vecMul(const Vec* src1, const Vec* src2, Vec* dst) { dst->x = src1->x * src2->x; dst->y = src1->y * src2->y; dst->z = src1->z * src2->z; } /* 80266BD0-80266C18 0048+00 s=0 e=7 z=0 None .text __ml__4cXyzCFRC3Vec */ cXyz cXyz::operator*(const Vec& vec) const { cXyz ret; vecMul(this, &vec, &ret); return cXyz(ret); } /* 80266C18-80266C6C 0054+00 s=0 e=3 z=12 None .text __dv__4cXyzCFf */ cXyz cXyz::operator/(f32 scale) const { Vec ret; PSVECScale(this, &ret, 1.0f / scale); return cXyz(ret); } /* 80266C6C-80266CBC 0050+00 s=1 e=0 z=0 None .text getCrossProduct__4cXyzCFRC3Vec */ cXyz cXyz::getCrossProduct(const Vec& vec) const { Vec ret; PSVECCrossProduct(this, &vec, &ret); return cXyz(ret); } /* 80266CBC-80266CE4 0028+00 s=0 e=7 z=6 None .text outprod__4cXyzCFRC3Vec */ cXyz cXyz::outprod(const Vec& vec) const { return this->getCrossProduct(vec); } /* 80266CE4-80266D30 004C+00 s=0 e=10 z=1 None .text norm__4cXyzCFv */ cXyz cXyz::norm(void) const { Vec ret; PSVECNormalize(this, &ret); return cXyz(ret); } /* 80266D30-80266DC4 0094+00 s=1 e=4 z=0 None .text normZP__4cXyzCFv */ cXyz cXyz::normZP(void) const { Vec vec; if (this->isNearZeroSquare() == false) { PSVECNormalize(this, &vec); } else { vec = cXyz::Zero; } return cXyz(vec); } inline void normToUpZIfNearZero(Vec& vec) { if (cXyz(vec).isNearZeroSquare()) { vec.x = 0.0f; vec.y = 0.0f; vec.z = 1.0f; const Vec v = {0, 0, 1}; vec = v; } } /* 80266DC4-80266EF4 0130+00 s=0 e=0 z=2 None .text normZC__4cXyzCFv */ cXyz cXyz::normZC(void) const { Vec outVec; if (this->isNearZeroSquare() == false) { PSVECNormalize(this, &outVec); } else { outVec = (*this * 1.25f * 1000000.0f).normZP(); normToUpZIfNearZero(outVec); } return outVec; } /* 80266EF4-80266F48 0054+00 s=0 e=13 z=17 None .text normalize__4cXyzFv */ cXyz cXyz::normalize(void) { PSVECNormalize(this, this); return *this; } /* 80266F48-80266FDC 0094+00 s=0 e=19 z=59 None .text normalizeZP__4cXyzFv */ cXyz cXyz::normalizeZP(void) { if (this->isNearZeroSquare() == false) { PSVECNormalize(this, this); } else { *this = cXyz::Zero; } return *this; } /* 80266FDC-8026702C 0050+00 s=0 e=2 z=3 None .text normalizeRS__4cXyzFv */ bool cXyz::normalizeRS(void) { if (this->isNearZeroSquare()) { return false; } else { PSVECNormalize(this, this); return true; } } /* 8026702C-8026706C 0040+00 s=0 e=5 z=9 None .text __eq__4cXyzCFRC3Vec */ bool cXyz::operator==(const Vec& vec) const { return this->x == vec.x && this->y == vec.y && this->z == vec.z; } /* 8026706C-802670AC 0040+00 s=0 e=6 z=6 None .text __ne__4cXyzCFRC3Vec */ bool cXyz::operator!=(const Vec& vec) const { return !(this->x == vec.x && this->y == vec.y && this->z == vec.z); } /* 802670AC-80267128 007C+00 s=0 e=4 z=7 None .text isZero__4cXyzCFv */ bool cXyz::isZero(void) const { return fabsf(this->x) < 32.0f * __float_epsilon[0] && fabsf(this->y) < 32.0f * __float_epsilon[0] && fabsf(this->z) < 32.0f * __float_epsilon[0]; } /* 80267128-80267150 0028+00 s=0 e=81 z=85 None .text atan2sX_Z__4cXyzCFv */ s16 cXyz::atan2sX_Z(void) const { return cM_atan2s(this->x, this->z); } /* 80267150-80267290 0140+00 s=0 e=21 z=33 None .text atan2sY_XZ__4cXyzCFv */ s16 cXyz::atan2sY_XZ(void) const { f32 mag = this->getMagXZ(); return cM_atan2s(-this->y, sqrtf(mag)); } const cXyz cXyz::Zero(0, 0, 0); const cXyz cXyz::BaseX(1, 0, 0); const cXyz cXyz::BaseY(0, 1, 0); const cXyz cXyz::BaseZ(0, 0, 1); const cXyz cXyz::BaseXY(1, 1, 0); const cXyz cXyz::BaseXZ(1, 0, 1); const cXyz cXyz::BaseYZ(0, 1, 1); const cXyz cXyz::BaseXYZ(1, 1, 1);