diff options
| author | Léo Lam <leo@leolam.fr> | 2021-04-21 18:37:20 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-04-21 18:49:25 +0200 |
| commit | 1631e2aae326499a1eba3ca88b54241db13efa97 (patch) | |
| tree | a86060af04f64fc4d9847f3a2f6a03c6d1e3235c /src/KingSystem/Physics/System/physContactInfoParam.cpp | |
| parent | f59bc21b3a9a30665eae6964327838106bf7119d (diff) | |
ksys/phys: Add ContactInfoParam
Diffstat (limited to 'src/KingSystem/Physics/System/physContactInfoParam.cpp')
| -rw-r--r-- | src/KingSystem/Physics/System/physContactInfoParam.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/KingSystem/Physics/System/physContactInfoParam.cpp b/src/KingSystem/Physics/System/physContactInfoParam.cpp new file mode 100644 index 00000000..e7f13709 --- /dev/null +++ b/src/KingSystem/Physics/System/physContactInfoParam.cpp @@ -0,0 +1,50 @@ +#include "KingSystem/Physics/System/physContactInfoParam.h" + +namespace ksys::phys { + +ContactInfoParam::ContactInfoParam() + : contact_point_info_num(0, "contact_point_info_num", &obj), + collision_info_num(0, "collision_info_num", &obj) {} + +ContactInfoParam::~ContactInfoParam() { + contact_point_info.freeBuffer(); + collision_info.freeBuffer(); +} + +bool ContactInfoParam::parse(const agl::utl::ResParameterList& res_list, sead::Heap* heap) { + if (!res_list || res_list.getResParameterObjNum() < 1) + return false; + + obj.applyResParameterObj(res_list.getResParameterObj(0), nullptr); + + const int num_contact_point_info = *contact_point_info_num; + const int num_collision_info = *collision_info_num; + + if (num_contact_point_info > 0) { + contact_point_info.allocBufferAssert(num_contact_point_info, heap); + for (int i = 0; i < num_contact_point_info; ++i) { + addObj(&contact_point_info[i], + sead::FormatFixedSafeString<32>("ContactPointInfo_%d", i)); + } + } + + if (num_collision_info > 0) { + collision_info.allocBufferAssert(num_collision_info, heap); + for (int i = 0; i < num_collision_info; ++i) { + addObj(&collision_info[i], sead::FormatFixedSafeString<32>("CollisionInfo_%d", i)); + } + } + + applyResParameterList(res_list); + return true; +} + +ContactPointInfoParam::ContactPointInfoParam() + : name(sead::SafeString::cEmptyString, "name", this), + type(sead::SafeString::cEmptyString, "type", this), num(0x80, "num", this) {} + +CollisionInfoParam::CollisionInfoParam() + : name(sead::SafeString::cEmptyString, "name", this), + type(sead::SafeString::cEmptyString, "type", this) {} + +} // namespace ksys::phys |
