mirror of
https://github.com/halpz/re3.git
synced 2025-07-26 06:22:48 +00:00
add w to CVector; adjust col structs a bit
This commit is contained in:
@ -44,3 +44,18 @@ operator*(const CMatrix &mat, const CVector &vec)
|
||||
mat.ry * vec.x + mat.fy * vec.y + mat.uy * vec.z + mat.py,
|
||||
mat.rz * vec.x + mat.fz * vec.y + mat.uz * vec.z + mat.pz);
|
||||
}
|
||||
|
||||
void
|
||||
RwV3dTransformPoints(CVector * pointsOut, const CVector * pointsIn, RwInt32 numPoints, const RwMatrix * matrix)
|
||||
{
|
||||
while(numPoints--){
|
||||
float x = pointsIn->x*matrix->right.x + pointsIn->y*matrix->up.x + pointsIn->z*matrix->at.x + matrix->pos.x;
|
||||
float y = pointsIn->x*matrix->right.y + pointsIn->y*matrix->up.y + pointsIn->z*matrix->at.y + matrix->pos.y;
|
||||
float z = pointsIn->x*matrix->right.z + pointsIn->y*matrix->up.z + pointsIn->z*matrix->at.z + matrix->pos.z;
|
||||
pointsOut->x = x;
|
||||
pointsOut->y = y;
|
||||
pointsOut->z = z;
|
||||
pointsOut++;
|
||||
pointsIn++;
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
// TODO(LCS): this should have 16 byte alignment but VS doesn't like passing aligned values by value
|
||||
// need a solution for this eventually if we ever want to load original assets
|
||||
class CVector : public RwV3d
|
||||
{
|
||||
public:
|
||||
float w;
|
||||
|
||||
CVector(void) {}
|
||||
CVector(float x, float y, float z)
|
||||
{
|
||||
@ -126,4 +130,7 @@ class CMatrix;
|
||||
|
||||
CVector Multiply3x3(const CMatrix &mat, const CVector &vec);
|
||||
CVector Multiply3x3(const CVector &vec, const CMatrix &mat);
|
||||
CVector operator*(const CMatrix &mat, const CVector &vec);
|
||||
CVector operator*(const CMatrix &mat, const CVector &vec);
|
||||
|
||||
// we need this because CVector and RwV3d have different size now
|
||||
void RwV3dTransformPoints(CVector * pointsOut, const CVector * pointsIn, RwInt32 numPoints, const RwMatrix * matrix);
|
||||
|
@ -3,10 +3,10 @@
|
||||
class TYPEALIGN(16) CVuVector : public CVector
|
||||
{
|
||||
public:
|
||||
float w;
|
||||
// float w; // in CVector now
|
||||
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(float x, float y, float z, float w) : CVector(x, y, z)/*, w(w)*/ { this->w = w;}
|
||||
CVuVector(const CVector &v) : CVector(v.x, v.y, v.z) {}
|
||||
CVuVector(const RwV3d &v) : CVector(v) {}
|
||||
/*
|
||||
|
Reference in New Issue
Block a user