diff --git a/include/WorldFormat/CMetroidModelInstance.hpp b/include/WorldFormat/CMetroidModelInstance.hpp index 8ca3d6ef..3d412911 100644 --- a/include/WorldFormat/CMetroidModelInstance.hpp +++ b/include/WorldFormat/CMetroidModelInstance.hpp @@ -1,18 +1,28 @@ #ifndef _CMETROIDMODELINSTANCE #define _CMETROIDMODELINSTANCE -#include "Kyoto/Math/CTransform4f.hpp" #include "Kyoto/Math/CAABox.hpp" +#include "Kyoto/Math/CTransform4f.hpp" #include "rstl/vector.hpp" class CMetroidModelInstance { public: - CMetroidModelInstance(const void* header, const void* firstGeom, - const void* positions, const void* normals, - const void* colors, const void* uvs, - const void* packedUvs, - const rstl::vector< void* >& surfaces); + CMetroidModelInstance(const void* header, const void* firstGeom, const void* positions, + const void* normals, const void* colors, const void* texCoords, + const void* packedTexCoords, const rstl::vector< void* >& surfaces); + +private: + u32 x0_visorFlags; + CTransform4f x4_worldXf; + CAABox x34_worldAABB; + const void* x4c_materialData; + rstl::vector x50_surfaces; + const void* x60_positions; + const void* x64_normals; + const void* x68_colors; + const void* x6c_texCoords; + const void* x70_packedTexCoords; }; #endif // _CMETROIDMODELINSTANCE diff --git a/src/WorldFormat/CMetroidModelInstance.cpp b/src/WorldFormat/CMetroidModelInstance.cpp index 8a70699f..cc7f4ca8 100644 --- a/src/WorldFormat/CMetroidModelInstance.cpp +++ b/src/WorldFormat/CMetroidModelInstance.cpp @@ -17,6 +17,18 @@ CAABox BoundingBoxFromData(const void* ptr) { return CAABox(minX, minY, minZ, maxX, maxY, maxZ); } -CMetroidModelInstance::CMetroidModelInstance(const void*, const void*, const void*, const void*, - const void*, const void*, const void*, - const rstl::vector< void* >&) {} +CMetroidModelInstance::CMetroidModelInstance(const void* header, const void* firstGeom, + const void* positions, const void* normals, + const void* colors, const void* texCoords, + const void* packedTexCoords, + const rstl::vector< void* >& surfaces) +: x0_visorFlags(*reinterpret_cast< const uint* >(header)) +, x4_worldXf(TransformFromData((uchar*)header + sizeof(uint))) +, x34_worldAABB(BoundingBoxFromData((uchar*)header + sizeof(CTransform4f) + sizeof(uint))) +, x4c_materialData(firstGeom) +, x50_surfaces(surfaces) +, x60_positions(positions) +, x64_normals(normals) +, x68_colors(colors) +, x6c_texCoords(texCoords) +, x70_packedTexCoords(packedTexCoords) {}