mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-04 10:26:16 -04:00
186 lines
5.5 KiB
C++
186 lines
5.5 KiB
C++
//
|
|
// J3DStruct
|
|
//
|
|
|
|
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
|
|
|
#include "JSystem/J3DGraphBase/J3DStruct.h"
|
|
#include "JSystem/JMath/JMath.h"
|
|
|
|
bool J3DTextureSRTInfo::operator==(J3DTextureSRTInfo& other) const {
|
|
if (mScaleX == other.mScaleX &&
|
|
mScaleY == other.mScaleY &&
|
|
mRotation == other.mRotation &&
|
|
mTranslationX == other.mTranslationX &&
|
|
mTranslationY == other.mTranslationY
|
|
) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool J3DLightInfo::operator==(J3DLightInfo& other) const {
|
|
if (mLightPosition.x == other.mLightPosition.x &&
|
|
mLightPosition.y == other.mLightPosition.y &&
|
|
mLightPosition.z == other.mLightPosition.z &&
|
|
mLightDirection.x == other.mLightDirection.x &&
|
|
mLightDirection.y == other.mLightDirection.y &&
|
|
mLightDirection.z == other.mLightDirection.z &&
|
|
mColor.r == other.mColor.r &&
|
|
mColor.g == other.mColor.g &&
|
|
mColor.b == other.mColor.b &&
|
|
mColor.a == other.mColor.a &&
|
|
mCosAtten.x == other.mCosAtten.x &&
|
|
mCosAtten.y == other.mCosAtten.y &&
|
|
mCosAtten.z == other.mCosAtten.z &&
|
|
mDistAtten.x == other.mDistAtten.x &&
|
|
mDistAtten.y == other.mDistAtten.y &&
|
|
mDistAtten.z == other.mDistAtten.z
|
|
) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
J3DLightInfo& J3DLightInfo::operator=(J3DLightInfo const& param_0) {
|
|
JMath::gekko_ps_copy6(&mLightPosition, ¶m_0.mLightPosition);
|
|
mColor = param_0.mColor;
|
|
JMath::gekko_ps_copy6(&mCosAtten, ¶m_0.mCosAtten);
|
|
return *this;
|
|
}
|
|
|
|
bool J3DTexMtxInfo::operator==(J3DTexMtxInfo& other) const {
|
|
if (mProjection != other.mProjection ||
|
|
mInfo != other.mInfo ||
|
|
!(mSRT == other.mSRT)
|
|
) {
|
|
return false;
|
|
}
|
|
if (mEffectMtx[0][0] != other.mEffectMtx[0][0] ||
|
|
mEffectMtx[0][1] != other.mEffectMtx[0][1] ||
|
|
mEffectMtx[0][2] != other.mEffectMtx[0][2] ||
|
|
mEffectMtx[0][3] != other.mEffectMtx[0][3] ||
|
|
mEffectMtx[1][0] != other.mEffectMtx[1][0] ||
|
|
mEffectMtx[1][1] != other.mEffectMtx[1][1] ||
|
|
mEffectMtx[1][2] != other.mEffectMtx[1][2] ||
|
|
mEffectMtx[1][3] != other.mEffectMtx[1][3] ||
|
|
mEffectMtx[2][0] != other.mEffectMtx[2][0] ||
|
|
mEffectMtx[2][1] != other.mEffectMtx[2][1] ||
|
|
mEffectMtx[2][2] != other.mEffectMtx[2][2] ||
|
|
mEffectMtx[2][3] != other.mEffectMtx[2][3] ||
|
|
mEffectMtx[3][0] != other.mEffectMtx[3][0] ||
|
|
mEffectMtx[3][1] != other.mEffectMtx[3][1] ||
|
|
mEffectMtx[3][2] != other.mEffectMtx[3][2] ||
|
|
mEffectMtx[3][3] != other.mEffectMtx[3][3]
|
|
) {
|
|
return false;
|
|
}
|
|
if (
|
|
mCenter.x != other.mCenter.x ||
|
|
mCenter.y != other.mCenter.y ||
|
|
mCenter.z != other.mCenter.z
|
|
) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
J3DTexMtxInfo& J3DTexMtxInfo::operator=(J3DTexMtxInfo const& param_0) {
|
|
mProjection = param_0.mProjection;
|
|
mInfo = param_0.mInfo;
|
|
JMath::gekko_ps_copy3(&mCenter, ¶m_0.mCenter);
|
|
mSRT = param_0.mSRT;
|
|
JMath::gekko_ps_copy16(&mEffectMtx, ¶m_0.mEffectMtx);
|
|
return *this;
|
|
}
|
|
|
|
// Helper functions to set float literal order
|
|
static f32 dummyLiteralOrder() {
|
|
return 1.0f;
|
|
}
|
|
|
|
void J3DTexMtxInfo::setEffectMtx(Mtx param_0) {
|
|
#ifdef __MWERKS__
|
|
JMath::gekko_ps_copy12(&mEffectMtx, param_0);
|
|
register f32 zero = 0.0f;
|
|
register f32* mtx = (f32*)mEffectMtx;
|
|
asm {
|
|
psq_st zero, 0x30(mtx), 0, 0
|
|
};
|
|
mEffectMtx[3][2] = 0.0f;
|
|
mEffectMtx[3][3] = 1.0f;
|
|
#else
|
|
JMath::gekko_ps_copy12(&mEffectMtx, param_0);
|
|
mEffectMtx[3][0] = 0.0f;
|
|
mEffectMtx[3][1] = 0.0f;
|
|
mEffectMtx[3][2] = 0.0f;
|
|
mEffectMtx[3][3] = 1.0f;
|
|
#endif
|
|
}
|
|
|
|
J3DIndTexMtxInfo& J3DIndTexMtxInfo::operator=(J3DIndTexMtxInfo const& param_0) {
|
|
JMath::gekko_ps_copy6(field_0x0, param_0.field_0x0);
|
|
field_0x18 = param_0.field_0x18;
|
|
return *this;
|
|
}
|
|
|
|
bool J3DFogInfo::operator==(J3DFogInfo& other) const {
|
|
if (mType == other.mType &&
|
|
mAdjEnable == other.mAdjEnable &&
|
|
mCenter == other.mCenter &&
|
|
mStartZ == other.mStartZ &&
|
|
mEndZ == other.mEndZ &&
|
|
mNearZ == other.mNearZ &&
|
|
mFarZ == other.mFarZ &&
|
|
mColor.r == other.mColor.r &&
|
|
mColor.g == other.mColor.g &&
|
|
mColor.b == other.mColor.b &&
|
|
mColor.a == other.mColor.a
|
|
) {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (mFogAdjTable.r[i] != other.mFogAdjTable.r[i]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
J3DFogInfo& J3DFogInfo::operator=(const J3DFogInfo& param_0) {
|
|
mType = param_0.mType;
|
|
mAdjEnable = param_0.mAdjEnable;
|
|
mCenter = param_0.mCenter;
|
|
mStartZ = param_0.mStartZ;
|
|
mEndZ = param_0.mEndZ;
|
|
mNearZ = param_0.mNearZ;
|
|
mFarZ = param_0.mFarZ;
|
|
mColor.r = param_0.mColor.r;
|
|
mColor.g = param_0.mColor.g;
|
|
mColor.b = param_0.mColor.b;
|
|
mColor.a = param_0.mColor.a;
|
|
for (int i = 0; i < 10; i++) {
|
|
mFogAdjTable.r[i] = param_0.mFogAdjTable.r[i];
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
bool J3DNBTScaleInfo::operator==(const J3DNBTScaleInfo& other) const {
|
|
if (mbHasScale == other.mbHasScale &&
|
|
mScale.x == other.mScale.x &&
|
|
mScale.y == other.mScale.y &&
|
|
mScale.z == other.mScale.z
|
|
) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
J3DNBTScaleInfo& J3DNBTScaleInfo::operator=(const J3DNBTScaleInfo& other) {
|
|
mbHasScale = other.mbHasScale;
|
|
mScale.x = other.mScale.x;
|
|
mScale.y = other.mScale.y;
|
|
mScale.z = other.mScale.z;
|
|
return *this;
|
|
}
|