42 inline virtual void Equals(
float (*p_data)[4]);
54 inline virtual void SetData(
float (*p_data)[4]);
72 inline virtual float (*
GetData()
const)[4];
80 inline virtual float*
Element(
int p_row,
int p_col);
88 inline virtual const float*
Element(
int p_row,
int p_col)
const;
119 inline virtual void TranslateBy(
const float& p_x,
const float& p_y,
const float& p_z);
127 inline virtual void SetTranslation(
const float& p_x,
const float& p_y,
const float& p_z);
134 inline virtual void Product(
float (*p_a)[4],
float (*p_b)[4]);
162 inline void Scale(
const float& p_x,
const float& p_y,
const float& p_z);
194 inline void Swap(
int p_d1,
int p_d2);
4x4 Matrix class with virtual interface for manipulation and transformation.
virtual float(* GetData())[4]
Gets modifiable access to the 4x4 float matrix.
virtual void Product(const Matrix4 &p_a, const Matrix4 &p_b)
Multiplies two Matrix4s, storing result in this matrix.
virtual Matrix4 & operator+=(float(*p_data)[4])
In-place matrix addition with external float[4][4].
virtual void SetData(float(*p_data)[4])
Set this matrix instance to use/point to a new 4x4 data block.
virtual void Clear()
Sets every element of the matrix to zero.
virtual float * Element(int p_row, int p_col)
Accesses an individual element of the matrix in writable form.
virtual void SetTranslation(const float &p_x, const float &p_y, const float &p_z)
Overwrites the translation part of the matrix (last column).
Matrix4(float(*p_data)[4])
Constructs a Matrix4 object referring to the given 4x4 float array.
void RotateY(const float &p_angle)
Applies a rotation (in radians or degrees, depending on implementation) about the Y axis.
virtual void Equals(float(*p_data)[4])
Set the matrix elements from a 4x4 float array.
virtual void TranslateBy(const float &p_x, const float &p_y, const float &p_z)
Applies translation by amounts along X, Y, Z axes.
void Swap(int p_d1, int p_d2)
Swaps the data between two rows/columns (presumably).
virtual void Equals(const Matrix4 &p_matrix)
Copies the matrix from another Matrix4.
void RotateX(const float &p_angle)
Applies a rotation (in radians or degrees, depending on implementation) about the X axis.
virtual float(* GetData() const)[4]
Gets read-only access to the 4x4 float matrix data.
virtual void ToQuaternion(Vector4 &p_resultQuat)
Converts the 3x3 rotation part of this matrix to a quaternion (Vector4).
void Scale(const float &p_x, const float &p_y, const float &p_z)
Applies scaling factors along X, Y, and Z axes.
float * operator[](int idx)
Array subscript operator for modifiable row access.
float(* m_data)[4]
Pointer to 4x4 float array, owns or refers to matrix data.
void RotateZ(const float &p_angle)
Applies a rotation (in radians or degrees) about the Z axis.
virtual void Product(float(*p_a)[4], float(*p_b)[4])
Multiplies two 4x4 float matrices, storing result in this.
const float * operator[](int idx) const
Const array subscript operator for readonly row access.
virtual const float * Element(int p_row, int p_col) const
Accesses an individual element in read-only form.
virtual void SetIdentity()
Sets this matrix to identity (diagonal 1, others 0).
virtual int FromQuaternion(const Vector4 &p_vec)
Initializes the matrix from a quaternion (Vector4).
virtual void operator=(const Matrix4 &p_matrix)
Assign/copy another matrix's values into this one.
int BETA_1005a590(Matrix4 &p_mat)
[AI] Appears to perform some operation using another matrix, but function/purpose unknown.
virtual void SetData(UnknownMatrixType &p_matrix)
Copies the matrix data from a raw UnknownMatrixType instance.
[AI] A four-dimensional vector, supporting operations relevant for matrix and quaternion math (homoge...
Matrix-like wrapper of 4x4 float array, with no methods.
float m_data[4][4]
[AI] Raw matrix data storage (row-major 4x4 floats).