#pragma once #include #include #include #include #include "KingSystem/Physics/physDefines.h" namespace ksys::phys { enum class ShapeType; struct BoxShapeParam; struct CapsuleShapeParam; struct CharacterPrismShapeParam; struct CommonShapeParam; struct CylinderShapeParam; struct PolytopeShapeParam; struct SphereShapeParam; struct ShapeParamObj : agl::utl::ParameterObj { ShapeParamObj(); ~ShapeParamObj() override; ShapeParamObj(const ShapeParamObj&) = delete; auto operator=(const ShapeParamObj&) = delete; bool parse(const agl::utl::ResParameterObj& res_obj, sead::Heap* heap); ShapeType getShapeType() const; void getCommon(CommonShapeParam* param) const; void getSphere(SphereShapeParam* param) const; void getCapsule(CapsuleShapeParam* param) const; void getCylinder(CylinderShapeParam* param) const; void getBox(BoxShapeParam* param) const; void getPolytope(PolytopeShapeParam* param) const; void getCharacterPrism(CharacterPrismShapeParam* param) const; agl::utl::Parameter> shape_type; agl::utl::Parameter radius; agl::utl::Parameter convex_radius; agl::utl::Parameter translate_0; agl::utl::Parameter translate_1; agl::utl::Parameter rotate; agl::utl::Parameter vertex_num; sead::Buffer> vertices; agl::utl::Parameter> material; agl::utl::Parameter> sub_material; agl::utl::Parameter> wall_code; agl::utl::Parameter> floor_code; agl::utl::Parameter item_code_disable_stick; }; } // namespace ksys::phys