diff options
author | aap <aap@papnet.eu> | 2020-08-07 10:18:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-07 10:18:40 +0200 |
commit | 0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b (patch) | |
tree | eccc96f08136cdc1d73c6b6e84a7669e42ef7a19 /src/math/VuVector.h | |
parent | Enable PS2 Alpha test Emu in debug menu on RW (diff) | |
parent | VU0 collision (diff) | |
download | re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar.gz re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar.bz2 re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar.lz re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar.xz re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.tar.zst re3-0d7fa6df3c0e8ef53f06e8aa98d73ebc58f8929b.zip |
Diffstat (limited to 'src/math/VuVector.h')
-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); |