summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2024-11-01 16:46:27 -0400
committerGitHub <noreply@github.com>2024-11-01 13:46:27 -0700
commit21cb60624a6cb0c518f85af7688bf618de252650 (patch)
tree942030fd3bf1ee4f28a0542f9fdf9b909c5d6fa1 /src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp
parent09423b6fa00029d0325cbade59c78ae42f1014de (diff)
J3DMatBlock, J3DMaterialFactory work (#2233)
Diffstat (limited to 'src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp')
-rw-r--r--src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp
index c53246008e..06ce608403 100644
--- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp
+++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp
@@ -27,15 +27,14 @@ u16 J3DModelLoader::countMaterialNum(const void* stream) {
}
/* 803367D4-803369A0 331114 01CC+00 0/0 3/0 0/0 .text calcLoadSize__14J3DModelLoaderFPCvUl */
-// NONMATCHING size load issue
u32 J3DModelLoader::calcLoadSize(void const* stream, u32 flags_) {
int flags = flags_;
const J3DModelFileData* header = static_cast<const J3DModelFileData*>(stream);
- size_t size;
+ size_t size = 0;
const J3DModelBlock* nextBlock = header->mBlocks;
u32 i = 0;
// TODO: What sizeof will get us a size of 0xE4?
- size = 0xE4;
+ size += 0xE4;
for (; i < header->mBlockNum; i++) {
switch (nextBlock->mBlockType) {
case 'INF1':
@@ -116,12 +115,11 @@ u32 J3DModelLoader::calcLoadMaterialTableSize(const void* stream) {
* calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl */
// NONMATCHING flags issue
u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) {
+ u32 size = 0;
const J3DModelFileData* header = (const J3DModelFileData*)stream;
const J3DModelBlock* nextBlock = header->mBlocks;
u32 i = 0;
- u32 matFlags = flags & (J3DMLF_Material_UseIndirect | J3DMLF_26);
- u32 flags2;
- int size = sizeof(J3DModelData);
+ size += sizeof(J3DModelData);
for (; i < header->mBlockNum; i++) {
switch (nextBlock->mBlockType) {
case 'INF1':
@@ -141,18 +139,19 @@ u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags)
break;
case 'MAT2':
break;
- case 'MAT3':
- flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn);
- flags2 |= matFlags;
+ case 'MAT3': {
+ u32 flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn);
+ flags2 |= flags & (J3DMLF_Material_UseIndirect | J3DMLF_26);
mpMaterialBlock = (const J3DMaterialBlock*)nextBlock;
if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == 0) {
field_0x18 = 1;
size += calcSizeMaterial((const J3DMaterialBlock*)nextBlock, flags2);
} else if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == J3DMLF_DoBdlMaterialCalc) {
field_0x18 = 1;
- size += calcSizePatchedMaterial((const J3DMaterialBlock*)nextBlock, matFlags);
+ size += calcSizePatchedMaterial((const J3DMaterialBlock*)nextBlock, flags2);
}
break;
+ }
case 'EVP1':
size += calcSizeEnvelope((const J3DEnvelopeBlock*)nextBlock);
break;
@@ -191,7 +190,6 @@ u32 J3DModelLoader::calcSizeInformation(const J3DModelInfoBlock* block, u32 flag
return size;
}
-
/* 80336D64-80336D90 3316A4 002C+00 2/2 0/0 0/0 .text
* calcSizeJoint__14J3DModelLoaderFPC13J3DJointBlock */
u32 J3DModelLoader::calcSizeJoint(const J3DJointBlock* block) {