SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraRegisterHolder.cpp
1#include "Game/Camera/CameraRegisterHolder.hpp"
2#include <cstring>
3
4const char *sDummyMatrixName = "ダミーマトリクス";
5const char *sDummyVectorName = "ダミーベクトル";
6const char *sDummyFloatName = "ダミー浮動小数";
7
8CameraRegisterHolder::CameraRegisterHolder(const char *pName) : NameObj(pName) {
9 initMtx();
10 initVec();
11 initFloat();
12 initDummyRegister();
13}
14
15void CameraRegisterHolder::declareMtxReg(const char *pName, MtxPtr pValue) {
16 mMatrices[mNrMatrices] = pValue;
17 mMatrixNames[mNrMatrices] = pName;
18
19 mNrMatrices++;
20}
21
22MtxPtr CameraRegisterHolder::getMtx(const char *pName) const {
23 s32 index = searchName(mMatrixNames, mNrMatrices, pName);
24
25 if (index < 0) {
26 index = 0;
27 }
28
29 return mMatrices[index];
30}
31
32void CameraRegisterHolder::declareVecReg(const char *pName, const TVec3f *pValue) {
33 mVectors[mNrVectors] = pValue;
34 mVectorNames[mNrVectors] = pName;
35 mNrVectors++;
36}
37
38const TVec3f *CameraRegisterHolder::getVec(const char *pName) const {
39 s32 index = searchName(mVectorNames, mNrVectors, pName);
40
41 if (index < 0) {
42 index = 0;
43 }
44
45 return mVectors[index];
46}
47
48void CameraRegisterHolder::declareFloatReg(const char *pName, const float *pValue) {
49 mFloats[mNrFloats] = pValue;
50 mFloatNames[mNrFloats] = pName;
51 mNrFloats++;
52}
53
54const char *CameraRegisterHolder::getDummyVecRegName() const {
55 return sDummyVectorName;
56}
57
58void CameraRegisterHolder::initMtx() {
59 mNrMatrices = 0;
60
61 for (u32 i = 0; i < NR_REGISTERS; i++) {
62 mMatrices[i] = nullptr;
63 mMatrixNames[i] = nullptr;
64 }
65}
66
67void CameraRegisterHolder::initVec() {
68 mNrVectors = 0;
69
70 for (u32 i = 0; i < NR_REGISTERS; i++) {
71 mVectors[i] = nullptr;
72 mVectorNames[i] = nullptr;
73 }
74}
75
76void CameraRegisterHolder::initFloat() {
77 mNrFloats = 0;
78
79 for (u32 i = 0; i < NR_REGISTERS; i++) {
80 mFloats[i] = nullptr;
81 mFloatNames[i] = nullptr;
82 }
83}
84
85void CameraRegisterHolder::initDummyRegister() {
86 mDummyMatrix.identity();
87 declareMtxReg(sDummyMatrixName, reinterpret_cast<MtxPtr>(&mDummyMatrix));
88
89 mDummyVector.z = 0.0f;
90 mDummyVector.y = 0.0f;
91 mDummyVector.x = 0.0f;
92 declareVecReg(sDummyVectorName, &mDummyVector);
93
94 mDummyFloat = 0.0f;
95 declareFloatReg(sDummyFloatName, &mDummyFloat);
96}
97
98s32 CameraRegisterHolder::searchName(const char *const *pNames, unsigned long count, const char *pName) const {
99 if (pName == nullptr) {
100 return -1;
101 }
102
103 for (s32 i = 0; i < count; i++) {
104 if (strcmp(pNames[i], pName) == 0) {
105 return i;
106 }
107 }
108
109 return -1;
110}
The most basic form of an object.
Definition NameObj.hpp:11