#pragma once #include #include #include #include #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" namespace ksys::res { // FIXME: incomplete class ModelList : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(ModelList, Resource) public: struct ControllerInfo { agl::utl::Parameter _2b0; agl::utl::Parameter _2d8; agl::utl::ParameterObj mControllerInfo; agl::utl::Parameter mBaseScale; agl::utl::Parameter _358; agl::utl::Parameter _380; agl::utl::Parameter _3a0; agl::utl::Parameter _3c8; agl::utl::Parameter _3e8; }; KSYS_CHECK_SIZE_NX150(ControllerInfo, 0x160); struct Attention { agl::utl::Parameter _0; agl::utl::Parameter _20; agl::utl::Parameter _48; agl::utl::Parameter _70; agl::utl::Parameter _90; agl::utl::Parameter _b0; agl::utl::Parameter _d8; agl::utl::Parameter _100; agl::utl::Parameter _128; agl::utl::Parameter _150; agl::utl::Parameter _178; agl::utl::Parameter _1a0; agl::utl::Parameter _1c8; agl::utl::Parameter _1f0; agl::utl::Parameter _210; agl::utl::Parameter _238; agl::utl::Parameter _260; agl::utl::Parameter _280; agl::utl::Parameter _2a8; agl::utl::ParameterObj _2d0; }; KSYS_CHECK_SIZE_NX150(Attention, 0x300); struct Unit { agl::utl::Parameter unit_name; agl::utl::Parameter bind_bone; agl::utl::ParameterObj obj; }; KSYS_CHECK_SIZE_NX150(Unit, 0x80); struct ModelData { agl::utl::Parameter folder; agl::utl::ParameterObj base_obj; sead::Buffer units; agl::utl::ParameterList unit_list; agl::utl::ParameterList list; }; KSYS_CHECK_SIZE_NX150(ModelData, 0xf8); // Misspelling of "partical", which is a misspelling of "particle"? struct Partial { agl::utl::Parameter bone; agl::utl::Parameter bind_flag; agl::utl::Parameter recursible; agl::utl::ParameterObj obj; }; KSYS_CHECK_SIZE_NX150(Partial, 0x98); struct AnmTarget { agl::utl::Parameter num_as_slot; agl::utl::Parameter is_partical_enable; agl::utl::Parameter target_type; agl::utl::ParameterObj base_obj; sead::Buffer partials; agl::utl::ParameterList partial_list; agl::utl::ParameterList list; }; KSYS_CHECK_SIZE_NX150(AnmTarget, 0x130); ModelList(); ~ModelList() override; void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override; bool needsParse() const override { return true; } bool parse_(u8* data, size_t size, sead::Heap* heap) override; const ControllerInfo& getControllerInfo() const { return mControllerInfo.ref(); } const Attention& getAttention() const { return mAttention.ref(); } const sead::Buffer& getModelData() const { return mModelData; } const sead::Buffer& getAnmTargets() const { return mAnmTargets; } bool is7C8() const { return _7c8; } private: sead::StorageFor mControllerInfo{sead::ZeroInitializeTag{}}; sead::StorageFor mAttention{sead::ZeroInitializeTag{}}; u8* mRawData{}; sead::Buffer mModelData; agl::utl::ParameterList mModelDataList; sead::Buffer mAnmTargets; agl::utl::ParameterList mAnmTargetList; bool _7c8 = false; }; KSYS_CHECK_SIZE_NX150(ModelList, 0x7d0); } // namespace ksys::res