ksys/phys: Implement ParamSet and res::Physics

This commit is contained in:
Léo Lam
2021-04-22 19:03:46 +02:00
parent f6e4643808
commit 136f20427d
6 changed files with 214 additions and 27 deletions
+18 -1
View File
@@ -5,6 +5,10 @@
#include <agl/Utils/aglParameterObj.h>
#include <container/seadBuffer.h>
namespace ksys::res {
class Physics;
}
namespace ksys::phys {
struct RigidBodySetParam;
@@ -16,13 +20,22 @@ struct ContactInfoParam;
struct EdgeRigidBodySetParam;
struct ParamSet : public agl::utl::ParameterList {
ParamSet();
~ParamSet() override;
ParamSet(const ParamSet&) = delete;
auto operator=(const ParamSet&) = delete;
bool parse(res::Physics* bphysics, agl::utl::ResParameterArchive archive, sead::Heap* heap);
RigidBodySetParam& getRigidBodySet(int idx);
sead::Buffer<RigidBodySetParam> rigid_body_sets{};
CharacterControllerParam* character_controller{};
ClothSetParam* cloth_set{};
RagdollParam* ragdoll{};
SupportBoneParam* support_bone{};
ContactInfoParam* contact_info{};
EdgeRigidBodySetParam* edge_rigid_body_sets{};
EdgeRigidBodySetParam* edge_rigid_body_set{};
agl::utl::ParameterObj obj;
agl::utl::Parameter<int> use_rigid_body_set_num;
@@ -34,6 +47,10 @@ struct ParamSet : public agl::utl::ParameterList {
agl::utl::Parameter<bool> use_system_group_handler;
agl::utl::Parameter<int> use_edge_rigid_body_num;
int num_rigid_bodies_with_link_matrix = 0;
private:
void finalize();
bool doParse(res::Physics* bphysics, agl::utl::ResParameterArchive archive, sead::Heap* heap);
};
} // namespace ksys::phys