// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0.If a copy of the MPL was not distributed with this // file, You can obtain one at https ://mozilla.org/MPL/2.0/. #ifndef DIRECTION_H #define DIRECTION_H #include "Angle.h" namespace Passer { namespace LinearAlgebra { struct Vector3; template class DirectionOf { public: AngleOf horizontal; AngleOf vertical; DirectionOf(); DirectionOf(AngleOf horizontal, AngleOf vertical); DirectionOf(Vector3 v); const static DirectionOf forward; const static DirectionOf back; const static DirectionOf up; const static DirectionOf down; const static DirectionOf left; const static DirectionOf right; DirectionOf operator+(const DirectionOf& v) const; DirectionOf operator+=(const DirectionOf& v); Vector3 ToVector3(); }; using DirectionSingle = DirectionOf; using Direction16 = DirectionOf; using Direction = DirectionOf; } // namespace LinearAlgebra } // namespace Passer using namespace Passer::LinearAlgebra; #endif