#pragma once #include "Engine.Core.Types.h" namespace Engine { namespace Core { class Matrix { public: engine_float32 m11, m12, m13, m14; engine_float32 m21, m22, m23, m24; engine_float32 m31, m32, m33, m34; engine_float32 m41, m42, m43, m44; Matrix() { m11 = 1; m12 = 0; m13 = 0; m14 = 0; m21 = 0; m22 = 1; m23 = 0; m24 = 0; m31 = 0; m32 = 0; m33 = 1; m34 = 0; m41 = 0; m42 = 0; m43 = 0; m44 = 1; }; Matrix(const Matrix& matrix2) { this->m11 = matrix2.m11; this->m12 = matrix2.m12; this->m13 = matrix2.m13; this->m14 = matrix2.m14; this->m21 = matrix2.m21; this->m22 = matrix2.m22; this->m23 = matrix2.m23; this->m24 = matrix2.m24; this->m31 = matrix2.m31; this->m32 = matrix2.m32; this->m33 = matrix2.m33; this->m34 = matrix2.m34; this->m41 = matrix2.m41; this->m42 = matrix2.m42; this->m43 = matrix2.m43; this->m44 = matrix2.m44; } Matrix( engine_float32 M11, engine_float32 M12, engine_float32 M13, engine_float32 M14, engine_float32 M21, engine_float32 M22, engine_float32 M23, engine_float32 M24, engine_float32 M31, engine_float32 M32, engine_float32 M33, engine_float32 M34, engine_float32 M41, engine_float32 M42, engine_float32 M43, engine_float32 M44 ) { m11 = M11; m12 = M12; m13 = M13; m14 = M14; m21 = M21; m22 = M22; m23 = M23; m24 = M24; m31 = M31; m32 = M32; m33 = M33; m34 = M34; m41 = M41; m42 = M42; m43 = M43; m44 = M44; } inline Matrix operator*=(const Matrix& matrix2) { m11 *= matrix2.m11; m12 *= matrix2.m12; m13 *= matrix2.m13; m14 *= matrix2.m14; m21 *= matrix2.m21; m22 *= matrix2.m22; m23 *= matrix2.m23; m24 *= matrix2.m24; m31 *= matrix2.m31; m32 *= matrix2.m32; m33 *= matrix2.m33; m34 *= matrix2.m34; m41 *= matrix2.m41; m42 *= matrix2.m42; m43 *= matrix2.m43; m44 *= matrix2.m44; } inline Matrix operator*(const Matrix& matrix2) { return Matrix( this->m11 * matrix2.m11, this->m12 * matrix2.m12, this->m13 * matrix2.m13, this->m14 * matrix2.m14, this->m21 * matrix2.m21, this->m22 * matrix2.m22, this->m23 * matrix2.m23, this->m24 * matrix2.m24, this->m31 * matrix2.m31, this->m32 * matrix2.m32, this->m33 * matrix2.m33, this->m34 * matrix2.m34, this->m41 * matrix2.m41, this->m42 * matrix2.m42, this->m43 * matrix2.m43, this->m44 * matrix2.m44 ); } }; } }