#pragma once #include #include #include #include #include #include #include #include #include #include "KingSystem/Resource/Actor/resResourceASResourceExtension.h" #include "KingSystem/Resource/resResource.h" namespace ksys::res { class ASSetting : public agl::utl::IParameterIO, public Resource { SEAD_RTTI_OVERRIDE(ASSetting, Resource) public: struct BoneParam { agl::utl::ParameterObj mObj; agl::utl::Parameter mBone; agl::utl::Parameter mWeight; }; KSYS_CHECK_SIZE_NX150(BoneParam, 0x78); class BoneParams : public ASParamParser { SEAD_RTTI_OVERRIDE(BoneParams, ASParamParser) public: BoneParams() : ASParamParser(Type::BlenderBone) {} ~BoneParams() override; bool parse(const ParseArgs& args) override; f32 getBoneWeight(const sead::SafeString& name) const; sead::Buffer mBuffer; }; struct BlenderBone { agl::utl::ParameterList mList; agl::utl::ParameterObj mNameParamObj; agl::utl::Parameter mKeyName; BoneParams mBoneParams; }; KSYS_CHECK_SIZE_NX150(BlenderBone, 0x108); ASSetting(); ~ASSetting() 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; sead::Buffer& getBlenderBones() { return mBlenderBones; } const sead::Buffer& getBlenderBones() const { return mBlenderBones; } private: sead::Buffer mBlenderBones; agl::utl::ParameterList mBlenderBoneList; }; KSYS_CHECK_SIZE_NX150(ASSetting, 0x260); } // namespace ksys::res