Plasma Engine
2.0
Loading...
Searching...
No Matches
SimdTransform.h
1
#pragma once
2
3
#include <Foundation/SimdMath/SimdQuat.h>
4
5
class
PL_FOUNDATION_DLL
plSimdTransform
6
{
7
public
:
8
PL_DECLARE_POD_TYPE();
9
11
plSimdTransform
();
// [tested]
12
14
explicit
plSimdTransform
(
const
plSimdVec4f
& vPosition,
const
plSimdQuat
& qRotation =
plSimdQuat::MakeIdentity
(),
const
plSimdVec4f
& vScale =
plSimdVec4f
(1.0f));
// [tested]
15
17
explicit
plSimdTransform
(
const
plSimdQuat
& qRotation);
// [tested]
18
20
[[nodiscard]]
static
plSimdTransform
Make(
const
plSimdVec4f
& vPosition,
const
plSimdQuat
& qRotation =
plSimdQuat::MakeIdentity
(),
const
plSimdVec4f
& vScale =
plSimdVec4f
(1.0f));
// [tested]
21
23
[[nodiscard]]
static
plSimdTransform
MakeIdentity();
// [tested]
24
26
[[nodiscard]]
static
plSimdTransform
MakeLocalTransform(
const
plSimdTransform
& globalTransformParent,
const
plSimdTransform
& globalTransformChild);
// [tested]
27
29
[[nodiscard]]
static
plSimdTransform
MakeGlobalTransform(
const
plSimdTransform
& globalTransformParent,
const
plSimdTransform
& localTransformChild);
// [tested]
30
32
plSimdFloat
GetMaxScale()
const
;
// [tested]
33
35
bool
HasMirrorScaling()
const
;
36
38
bool
ContainsUniformScale()
const
;
39
40
public
:
42
bool
IsEqual(
const
plSimdTransform
& rhs,
const
plSimdFloat
& fEpsilon)
const
;
// [tested]
43
44
public
:
46
void
Invert();
// [tested]
47
49
plSimdTransform
GetInverse()
const
;
// [tested]
50
52
plSimdMat4f
GetAsMat4()
const
;
// [tested]
53
54
public
:
55
[[nodiscard]]
plSimdVec4f
TransformPosition(
const
plSimdVec4f
& v)
const
;
// [tested]
56
[[nodiscard]]
plSimdVec4f
TransformDirection(
const
plSimdVec4f
& v)
const
;
// [tested]
57
59
void
operator*=(
const
plSimdTransform
& other);
// [tested]
60
62
void
operator*=(
const
plSimdQuat
& q);
// [tested]
63
64
void
operator+=(
const
plSimdVec4f
& v);
// [tested]
65
void
operator-=(
const
plSimdVec4f
& v);
// [tested]
66
67
public
:
68
plSimdVec4f
m_Position;
69
plSimdQuat
m_Rotation;
70
plSimdVec4f
m_Scale;
71
};
72
73
// *** free functions ***
74
76
PL_ALWAYS_INLINE
const
plSimdVec4f
operator*(
const
plSimdTransform
& t,
const
plSimdVec4f
& v);
// [tested]
77
79
PL_ALWAYS_INLINE
const
plSimdTransform
operator*(
const
plSimdQuat
& q,
const
plSimdTransform
& t);
// [tested]
80
82
PL_ALWAYS_INLINE
const
plSimdTransform
operator*(
const
plSimdTransform
& t,
const
plSimdQuat
& q);
// [tested]
83
85
PL_ALWAYS_INLINE
const
plSimdTransform
operator+(
const
plSimdTransform
& t,
const
plSimdVec4f
& v);
// [tested]
86
88
PL_ALWAYS_INLINE
const
plSimdTransform
operator-(
const
plSimdTransform
& t,
const
plSimdVec4f
& v);
// [tested]
89
91
PL_ALWAYS_INLINE
const
plSimdTransform
operator*(
const
plSimdTransform
& lhs,
const
plSimdTransform
& rhs);
// [tested]
92
93
PL_ALWAYS_INLINE
bool
operator==(
const
plSimdTransform
& t1,
const
plSimdTransform
& t2);
// [tested]
94
PL_ALWAYS_INLINE
bool
operator!=(
const
plSimdTransform
& t1,
const
plSimdTransform
& t2);
// [tested]
95
96
97
#include <Foundation/SimdMath/Implementation/SimdTransform_inl.h>
plSimdFloat
Definition
SimdFloat.h:7
plSimdMat4f
A 4x4 matrix class.
Definition
SimdMat4f.h:7
plSimdQuat
Definition
SimdQuat.h:6
plSimdQuat::MakeIdentity
static const plSimdQuat MakeIdentity()
Static function that returns a quaternion that represents the identity rotation (none).
Definition
SimdQuat_inl.h:10
plSimdTransform
Definition
SimdTransform.h:6
plSimdTransform::plSimdTransform
plSimdTransform()
Default constructor: Does not do any initialization.
plSimdVec4f
A 4-component SIMD vector class.
Definition
SimdVec4f.h:8
Code
Engine
Foundation
SimdMath
SimdTransform.h
Generated by
1.11.0