Stingray SDK headers taken from https://github.com/AutodeskGames/stingray-plugin/
78 lines
3.1 KiB
C++
78 lines
3.1 KiB
C++
#pragma once
|
|
|
|
#include "types.h"
|
|
#include "platform.h"
|
|
|
|
namespace stingray_plugin_foundation {
|
|
|
|
// Operators
|
|
__forceinline Matrix4x4 operator *(const Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
__forceinline Matrix4x4 operator +(const Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
__forceinline Matrix4x4 operator -(const Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
|
|
__forceinline void operator *=(Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
__forceinline void operator +=(Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
__forceinline void operator -=(Matrix4x4& lhs, const Matrix4x4 &rhs);
|
|
|
|
__forceinline bool operator==(const Matrix4x4 &lhs, const Matrix4x4 &rhs);
|
|
__forceinline bool operator!=(const Matrix4x4 &lhs, const Matrix4x4 &rhs);
|
|
|
|
__forceinline Matrix4x4 operator *(const Matrix4x4& lhs, float rhs);
|
|
__forceinline Matrix4x4 operator *(float lhs, const Matrix4x4 &rhs);
|
|
|
|
// Methods
|
|
__forceinline void set_to_zero_matrix(Matrix4x4 &m);
|
|
__forceinline void set_to_identity_matrix(Matrix4x4 &m);
|
|
__forceinline void set_to_scale_matrix(Matrix4x4 &m, const Vector3 &s);
|
|
__forceinline void set_to_translation_matrix(Matrix4x4 &m, const Vector3 &t);
|
|
__forceinline const Matrix4x4 &matrix4x4_zero();
|
|
__forceinline const Matrix4x4 &matrix4x4_identity();
|
|
__forceinline void normalize(Matrix4x4 &m);
|
|
__forceinline float determinant(const Matrix4x4 &m);
|
|
__forceinline bool has_mirroring(const Matrix4x4 &m);
|
|
|
|
Matrix4x4 inverse(const Matrix4x4 &m);
|
|
|
|
__forceinline float & element(Matrix4x4 &m, int i, int j);
|
|
__forceinline const float & element(const Matrix4x4 &m, int i, int j);
|
|
|
|
__forceinline void transpose(Matrix4x4 &m);
|
|
|
|
__forceinline Matrix4x4 rotation(const Matrix4x4 &m);
|
|
__forceinline void set_rotation(Matrix4x4 &m, const Matrix4x4 &rot);
|
|
|
|
__forceinline Vector3 scale(const Matrix4x4 &m);
|
|
__forceinline void set_scale(Matrix4x4 &m, const Vector3 &scale);
|
|
|
|
// Vector3 helper access
|
|
__forceinline Vector3 &translation(Matrix4x4 &m);
|
|
__forceinline Vector3 &x_axis(Matrix4x4 &m);
|
|
__forceinline Vector3 &y_axis(Matrix4x4 &m);
|
|
__forceinline Vector3 &z_axis(Matrix4x4 &m);
|
|
__forceinline const Vector3 &translation(const Matrix4x4 &m);
|
|
__forceinline const Vector3 &x_axis(const Matrix4x4 &m);
|
|
__forceinline const Vector3 &y_axis(const Matrix4x4 &m);
|
|
__forceinline const Vector3 &z_axis(const Matrix4x4 &m);
|
|
|
|
__forceinline void set_translation(Matrix4x4 &m, const Vector3 &t);
|
|
|
|
__forceinline Vector3 &forward_axis(Matrix4x4 &m);
|
|
__forceinline Vector3 &up_axis(Matrix4x4 &m);
|
|
__forceinline Vector3 &right_axis(Matrix4x4 &m);
|
|
__forceinline const Vector3 &forward_axis(const Matrix4x4 &m);
|
|
__forceinline const Vector3 &up_axis(const Matrix4x4 &m);
|
|
__forceinline const Vector3 &right_axis(const Matrix4x4 &m);
|
|
|
|
__forceinline Vector3 &axis(Matrix4x4 &m, int i);
|
|
__forceinline const Vector3 &axis(const Matrix4x4 &m, int i);
|
|
__forceinline Vector4 &row(Matrix4x4 &m, int i);
|
|
__forceinline const Vector4 &row(const Matrix4x4 &m, int i);
|
|
|
|
// Transforms the point p with the matrix m.
|
|
__forceinline Vector3 transform(const Matrix4x4 &m, const Vector3 &p);
|
|
__forceinline Vector3 transform_without_translation(const Matrix4x4 &m, const Vector3 &p);
|
|
__forceinline Vector4 transform(const Matrix4x4 &m, const Vector4 &p);
|
|
|
|
}
|
|
|
|
#include "matrix4x4.inl"
|