mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-30 16:35:26 -04:00
4df8ccc871
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}
* Update configure.py and project.py for new libs structure
* Refactor `#include <dolphin/x.h>` -> `<x.h>`
* Remove `__REVOLUTION_SDK__` forwards from dolphin
* Fix dolphin/ references in revolution
* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`
* Always build TRK against dolphin headers
* Resolve revolution SDK header resolution issues
117 lines
3.2 KiB
C++
117 lines
3.2 KiB
C++
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
|
|
|
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
|
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
|
|
|
void J3DMaterialAnm::initialize() {
|
|
for (int i = 0; i < ARRAY_SIZE(mMatColorAnm); i++) {
|
|
mMatColorAnm[i].setAnmFlag(false);
|
|
}
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(mTexNoAnm); i++) {
|
|
mTexNoAnm[i].setAnmFlag(false);
|
|
}
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(mTevColorAnm); i++) {
|
|
mTevColorAnm[i].setAnmFlag(false);
|
|
}
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(mTevKColorAnm); i++) {
|
|
mTevKColorAnm[i].setAnmFlag(false);
|
|
}
|
|
|
|
for (int i = 0; i < ARRAY_SIZE(mTexMtxAnm); i++) {
|
|
mTexMtxAnm[i].setAnmFlag(false);
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::calc(J3DMaterial* pMaterial) const {
|
|
J3D_ASSERT_NULLPTR(54, pMaterial != NULL);
|
|
|
|
for (u32 i = 0; i < ARRAY_SIZE(mMatColorAnm); i++) {
|
|
if (mMatColorAnm[i].getAnmFlag()) {
|
|
GXColor* color = pMaterial->mColorBlock->getMatColor(i);
|
|
mMatColorAnm[i].calc(color);
|
|
}
|
|
}
|
|
|
|
u16 tmp;
|
|
for (u32 i = 0; i < ARRAY_SIZE(mTexNoAnm); i++) {
|
|
if (mTexNoAnm[i].getAnmFlag()) {
|
|
mTexNoAnm[i].calc(&tmp);
|
|
pMaterial->mTevBlock->setTexNo(i, tmp);
|
|
}
|
|
}
|
|
|
|
for (u32 i = 0; i < 3; i++) {
|
|
if (mTevColorAnm[i].getAnmFlag()) {
|
|
GXColorS10* color = pMaterial->mTevBlock->getTevColor(i);
|
|
mTevColorAnm[i].calc(color);
|
|
}
|
|
}
|
|
|
|
for (u32 i = 0; i < ARRAY_SIZE(mTevKColorAnm); i++) {
|
|
if (mTevKColorAnm[i].getAnmFlag()) {
|
|
GXColor* color = pMaterial->mTevBlock->getTevKColor(i);
|
|
mTevKColorAnm[i].calc(color);
|
|
}
|
|
}
|
|
|
|
for (u32 i = 0; i < ARRAY_SIZE(mTexMtxAnm); i++) {
|
|
if (mTexMtxAnm[i].getAnmFlag()) {
|
|
J3DTextureSRTInfo* pSRT = &pMaterial->mTexGenBlock->getTexMtx(i)->getTexMtxInfo().mSRT;
|
|
mTexMtxAnm[i].calc(pSRT);
|
|
}
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::setMatColorAnm(int idx, J3DMatColorAnm* pMatColorAnm) {
|
|
J3D_ASSERT_RANGE(106, idx >= 0 && idx < 2);
|
|
|
|
if (pMatColorAnm == NULL) {
|
|
mMatColorAnm[idx].setAnmFlag(false);
|
|
} else {
|
|
mMatColorAnm[idx] = *pMatColorAnm;
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::setTexMtxAnm(int idx, J3DTexMtxAnm* pTexMtxAnm) {
|
|
J3D_ASSERT_RANGE(117, idx >= 0 && idx < 8);
|
|
|
|
if (pTexMtxAnm == NULL) {
|
|
mTexMtxAnm[idx].setAnmFlag(false);
|
|
} else {
|
|
mTexMtxAnm[idx] = *pTexMtxAnm;
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::setTexNoAnm(int idx, J3DTexNoAnm* pTexNoAnm) {
|
|
J3D_ASSERT_RANGE(128, idx >= 0 && idx < 8);
|
|
|
|
if (pTexNoAnm == NULL) {
|
|
mTexNoAnm[idx].setAnmFlag(false);
|
|
} else {
|
|
mTexNoAnm[idx] = *pTexNoAnm;
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::setTevColorAnm(int idx, J3DTevColorAnm* pTevColorAnm) {
|
|
J3D_ASSERT_RANGE(139, idx >= 0 && idx < 4);
|
|
|
|
if (pTevColorAnm == NULL) {
|
|
mTevColorAnm[idx].setAnmFlag(false);
|
|
} else {
|
|
mTevColorAnm[idx] = *pTevColorAnm;
|
|
}
|
|
}
|
|
|
|
void J3DMaterialAnm::setTevKColorAnm(int idx, J3DTevKColorAnm* pTevKColorAnm) {
|
|
J3D_ASSERT_RANGE(150, idx >= 0 && idx < 4);
|
|
|
|
if (pTevKColorAnm == NULL) {
|
|
mTevKColorAnm[idx].setAnmFlag(false);
|
|
} else {
|
|
mTevKColorAnm[idx] = *pTevKColorAnm;
|
|
}
|
|
}
|