FFL
Loading...
Searching...
No Matches
FFLiCoordinate.h
Go to the documentation of this file.
1#ifndef FFLI_COORDINATE_H_
2#define FFLI_COORDINATE_H_
3
4#include <nn/ffl/types.h>
5
8struct FFLVec3;
9struct FFLVec4;
10
12{
13public:
16
17 void Transform(FFLVec3* pVec) const;
18 void Transform(FFLVec4* pVec) const;
19
20 static f32 FlipValue(FFLVec3* pVec, f32 value);
21 static f32 FlipValue(FFLVec4* pVec, f32 value);
22
23 void TransformWithoutScale(FFLVec3* pVec) const;
24 void TransformWithoutScale(FFLVec4* pVec) const; // Deleted in NSMBU
25
28
29 static u32 FlipValue(FFLiSnorm10_10_10_2* pVec, u32 value);
30 static s8 FlipValue(FFLiSnorm8_8_8_8* pVec, s8 value);
31
32 bool IsDefault() const;
33
34private:
35 template <typename T, typename ValueT>
36 void TransformCommon(T* pVec) const
37 {
38 ValueT x = pVec->x;
39 ValueT y = pVec->y;
40 ValueT z = pVec->z;
41
42 ValueT values[3] = { x, y, z };
43
44 if (m_FlipX)
45 x = FlipValue(pVec, x);
46
47 if (m_FlipY)
48 y = FlipValue(pVec, y);
49
50 if (m_FlipZ)
51 z = FlipValue(pVec, z);
52
53 values[m_SwizzleX] = x;
54 values[m_SwizzleY] = y;
55 values[m_SwizzleZ] = z;
56
57 pVec->x = values[0];
58 pVec->y = values[1];
59 pVec->z = values[2];
60 }
61
62private:
66 bool m_FlipY;
67 bool m_FlipZ;
68 bool m_FlipX;
70};
72
73#endif // FFLI_COORDINATE_H_
NN_STATIC_ASSERT(sizeof(FFLiAllocator)==4)
Definition FFLiCoordinate.h:12
void TransformCommon(T *pVec) const
Definition FFLiCoordinate.h:36
bool m_FlipY
Definition FFLiCoordinate.h:66
f32 m_Scale
Definition FFLiCoordinate.h:69
void TransformWithoutScale(FFLVec4 *pVec) const
Definition FFLiCoordinate.cpp:48
static u32 FlipValue(FFLiSnorm10_10_10_2 *pVec, u32 value)
Definition FFLiCoordinate.cpp:63
void Transform(FFLVec3 *pVec) const
Definition FFLiCoordinate.cpp:20
static s8 FlipValue(FFLiSnorm8_8_8_8 *pVec, s8 value)
Definition FFLiCoordinate.cpp:76
u8 m_SwizzleY
Definition FFLiCoordinate.h:63
static f32 FlipValue(FFLVec3 *pVec, f32 value)
Definition FFLiCoordinate.cpp:33
bool IsDefault() const
Definition FFLiCoordinate.cpp:84
bool m_FlipZ
Definition FFLiCoordinate.h:67
static f32 FlipValue(FFLVec4 *pVec, f32 value)
Definition FFLiCoordinate.cpp:38
void TransformWithoutScale(FFLiSnorm8_8_8_8 *pVec) const
Definition FFLiCoordinate.cpp:58
u8 m_SwizzleZ
Definition FFLiCoordinate.h:64
~FFLiCoordinate()
Definition FFLiCoordinate.cpp:16
void TransformWithoutScale(FFLiSnorm10_10_10_2 *pVec) const
Definition FFLiCoordinate.cpp:53
void Transform(FFLVec4 *pVec) const
Definition FFLiCoordinate.cpp:28
void TransformWithoutScale(FFLVec3 *pVec) const
Definition FFLiCoordinate.cpp:43
bool m_FlipX
Definition FFLiCoordinate.h:68
FFLiCoordinate()
Definition FFLiCoordinate.cpp:5
u8 m_SwizzleX
Definition FFLiCoordinate.h:65
Definition FFLVec.h:19
Definition FFLVec.h:28
Definition FFLVec.h:38
Definition FFLVec.h:48