diff options
author | aap <aap@papnet.eu> | 2020-08-03 12:58:37 +0200 |
---|---|---|
committer | aap <aap@papnet.eu> | 2020-08-03 17:32:06 +0200 |
commit | abb640c6b6b1c4c1b699d18509c8a344e2be2dd5 (patch) | |
tree | 58cecb7517dfd70a4ce5e2f646ff23aa4fa4084d /src/math/VuVector.h | |
parent | Move sdk and eax (diff) | |
download | re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar.gz re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar.bz2 re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar.lz re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar.xz re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.tar.zst re3-abb640c6b6b1c4c1b699d18509c8a344e2be2dd5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/math/VuVector.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/math/VuVector.h b/src/math/VuVector.h new file mode 100644 index 00000000..f90818e0 --- /dev/null +++ b/src/math/VuVector.h @@ -0,0 +1,41 @@ +#pragma once + +class TYPEALIGN(16) CVuVector : public CVector +{ +public: + float w; + CVuVector(void) {} + CVuVector(float x, float y, float z) : CVector(x, y, z) {} + CVuVector(float x, float y, float z, float w) : CVector(x, y, z), w(w) {} + CVuVector(const CVector &v) : CVector(v.x, v.y, v.z) {} +#ifdef RWCORE_H + CVuVector(const RwV3d &v) : CVector(v.x, v.y, v.z) {} + + operator RwV3d (void) const { + RwV3d vecRw = { this->x, this->y, this->z }; + return vecRw; + } + + operator RwV3d *(void) { + return (RwV3d*)this; + } +#endif +/* + void Normalise(void) { + float sq = MagnitudeSqr(); + // TODO: VU0 code + if(sq > 0.0f){ + float invsqrt = RecipSqrt(sq); + x *= invsqrt; + y *= invsqrt; + z *= invsqrt; + }else + x = 1.0f; + } +*/ +}; + +void TransformPoint(CVuVector &out, const CMatrix &mat, const CVuVector &in); +void TransformPoint(CVuVector &out, const CMatrix &mat, const RwV3d &in); +void TransformPoints(CVuVector *out, int n, const CMatrix &mat, const RwV3d *in, int stride); +void TransformPoints(CVuVector *out, int n, const CMatrix &mat, const CVuVector *in); |