#pragma once #include #include #include #include "Graphics/CCubeModel.hpp" #include "Runtime/RetroTypes.hpp" #include #include #include namespace metaforce { class CCubeSurface; class CMetroidModelInstance { u32 x0_visorFlags = 0; zeus::CTransform x4_worldXf; zeus::CAABox x34_worldAABB; const u8* x4c_materialData = nullptr; std::vector x50_surfaces; // was rstl::vector* std::vector x60_positions; // was void* std::vector x64_normals; // was void* std::vector x68_colors; // was void* std::vector> x6c_texCoords; // was void* std::vector> x70_packedTexCoords; // was void* public: CMetroidModelInstance() = default; CMetroidModelInstance(std::pair modelHeader, const u8* materialData, std::pair positions, std::pair normals, std::pair colors, std::pair texCoords, std::pair packedTexCoords, std::vector&& surfaces); [[nodiscard]] u32 GetFlags() const { return x0_visorFlags; } [[nodiscard]] const zeus::CAABox& GetBoundingBox() const { return x34_worldAABB; } [[nodiscard]] std::vector* GetSurfaces() { return &x50_surfaces; } [[nodiscard]] const std::vector* GetSurfaces() const { return &x50_surfaces; } [[nodiscard]] const u8* GetMaterialPointer() const { return x4c_materialData; } [[nodiscard]] TVectorRef GetVertexPointer() { return &x60_positions; } [[nodiscard]] TConstVectorRef GetVertexPointer() const { return &x60_positions; } [[nodiscard]] TVectorRef GetNormalPointer() { return &x64_normals; } [[nodiscard]] TConstVectorRef GetNormalPointer() const { return &x64_normals; } [[nodiscard]] const std::vector* GetColorPointer() const { return &x68_colors; } [[nodiscard]] const std::vector>* GetTCPointer() const { return &x6c_texCoords; } [[nodiscard]] const std::vector>* GetPackedTCPointer() const { return &x70_packedTexCoords; } }; } // namespace metaforce