#pragma once #ifdef P_BUILD_LIB #include "PhanesEnginePCH.h" #else #include #endif #ifndef MATH_FWD_H #define MATH_FWD_H #include "Core/public/Math/Boilerplate.h" #include "Core/public/Math/SIMD/PhanesSIMDTypes.h" /** * Includes forward declarations, as well as certain useful typedefs. * * @ref OSAL/PlatformTypes.h */ namespace Phanes::Core::Math { /** * Template forward declarations. */ template struct TColor; template struct TLinearColor; template struct TLine; template struct TQuaternion; template struct TTransform; template struct TPoint2; template struct TPoint3; template struct TPoint4; template struct TIntPoint2; template struct TIntPoint3; template struct TIntPoint4; template struct TMatrix2; template struct TMatrix3; template struct TMatrix4; template struct TVector2; template struct TVector3; template struct TVector4; template struct TIntVector2; template struct TIntVector3; template struct TIntVector4; template struct TPlane; template struct TRay; /** * Specific instantiation of forward declarations. */ // TPoint2 typedef TPoint2 Point2; typedef TPoint2 Point2f; typedef TPoint2 Point2d; // TPoint3 typedef TPoint3 Point3; typedef TPoint3 Point3f; typedef TPoint3 Point3d; // TPoint4 typedef TPoint4 Point4; typedef TPoint4 Point4f; typedef TPoint4 Point4d; // TIntPoint2 typedef TIntPoint2 IntPoint2; typedef TIntPoint2 IntPoint2i; typedef TIntPoint2 IntPoint2l; // TIntPoint3 typedef TIntPoint3 IntPoint3; typedef TIntPoint3 IntPoint3i; typedef TIntPoint3 IntPoint3l; // TIntPoint4 typedef TIntPoint4 IntPoint4; typedef TIntPoint4 IntPoint4i; typedef TIntPoint4 IntPoint4l; // IntVetor2 typedef TIntVector2 IntVector2; typedef TIntVector2 Vector2i; typedef TIntVector2 LongVector2; typedef TIntVector2 Vector2l; // IntVetor3 typedef TIntVector3 IntVector3; typedef TIntVector3 Vector3i; typedef TIntVector3 LongVector3; typedef TIntVector3 Vector3l; // IntVetor4 typedef TIntVector4 IntVector4; typedef TIntVector4 Vector4i; typedef TIntVector4 LongVector4; typedef TIntVector4 Vector4l; // Vector2 typedef TVector2 Vector2; typedef TVector2 Vector2f; typedef TVector2 Vector2d; typedef TVector2::value> Vector2Regf64; typedef TVector2::value> Vector2Reg; typedef TVector2::value> Vector2Regd; // Vector3 typedef TVector3 Vector3; typedef TVector3 Vector3f; typedef TVector3 Vector3d; typedef TVector3::value> Vector3Reg; typedef TVector3::value> Vector3Regf32; typedef TVector3::value> Vector3Regd; typedef TVector3::value> Vector3Regf64; // Vector4 typedef TVector4 Vector4; typedef TVector4 Vector4f; typedef TVector4 Vector4d; typedef TVector4::value> Vector4Reg; typedef TVector4::value> Vector4Regf32; typedef TVector4::value> Vector4Regd; typedef TVector4::value> Vector4Regf64; // Matrix2 typedef TMatrix2 Matrix2; typedef TMatrix2 Matrix2f; typedef TMatrix2 Matrix2d; // Matrix3 typedef TMatrix3 Matrix3; typedef TMatrix3 Matrix3f; typedef TMatrix3 Matrix3d; typedef TMatrix3::value> Matrix3Reg; typedef TMatrix3::value> Matrix3Regf; typedef TMatrix3::value> Matrix3Regd; typedef TMatrix3::value> Matrix3Regf64; // Matrix4 typedef TMatrix4 Matrix4; typedef TMatrix4 Matrix4f; typedef TMatrix4 Matrix4d; typedef TMatrix3::value> Matrix4Reg; typedef TMatrix3::value> Matrix4Regf; typedef TMatrix3::value> Matrix4Regd; typedef TMatrix3::value> Matrix4Regf64; // TPlane typedef TPlane Plane; typedef TPlane Planef; typedef TPlane Planed; typedef TPlane::value> PlaneReg; typedef TPlane::value> PlaneRegd; } // Phanes::Core::Math::coretypes namespace Phanes::Core::Math::Internal { // Internal types template struct AVector; template struct AMatrix; } #endif // !MATH_FWD_H