#pragma once #include "shared.hpp" #include "vector.hpp" namespace ace { template class transform_matrix_base { public: transform_matrix_base & operator= (const transform_matrix_base& other) { _x = other.x(); _y = other.y(); _z = other.z(); _n = other.n(); return *this; } transform_matrix_base() {} transform_matrix_base(std::istream &stream_, uint32_t version = 68) : _x(stream_), _y(stream_), _z(stream_), _n(stream_) { } transform_matrix_base(ace::vector3 x_, ace::vector3 y_, ace::vector3 z_, ace::vector3 n_) : _x(x_), _y(y_), _z(z_), _n(n_) { } const ace::vector3 & x() const { return _x; } const ace::vector3 & y() const { return _y; } const ace::vector3 & z() const { return _z; } const ace::vector3 & n() const { return _n; } void x(const ace::vector3 val) { _x = val; } void y(const ace::vector3 val) { _y = val; } void z(const ace::vector3 val) { _z = val; } void n(const ace::vector3 val) { _n = val; } protected: ace::vector3 _x; ace::vector3 _y; ace::vector3 _z; ace::vector3 _n; }; typedef transform_matrix_base transform_matrix; }