summaryrefslogtreecommitdiff
path: root/src/KingSystem/Physics/RigidBody/physRigidBodySetParam.h
blob: 5602ad1c03d1480743e3f81262df674167a78fe0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include <container/seadBuffer.h>
#include <utility/aglParameter.h>
#include <utility/aglParameterList.h>
#include <utility/aglParameterObj.h>

namespace ksys::phys {

struct RigidBodyParam;

struct RigidBodySetParam : agl::utl::ParameterList {
    enum class Type {
        Invalid = 0,
        FromShapeType = 1,
        FromResource = 2,
    };

    RigidBodySetParam();
    ~RigidBodySetParam() override;
    RigidBodySetParam(const RigidBodySetParam&) = delete;
    auto operator=(const RigidBodySetParam&) = delete;

    bool parse(agl::utl::ResParameterList res_list, sead::Heap* heap);
    int getNumRigidBodies() const;

    Type type_val = Type::Invalid;
    agl::utl::ParameterObj obj;
    agl::utl::Parameter<sead::SafeString> set_name;
    agl::utl::Parameter<sead::SafeString> type;
    agl::utl::Parameter<int> num;
    agl::utl::Parameter<sead::SafeString> setup_file_path;
    sead::Buffer<RigidBodyParam> rigid_bodies;
};

}  // namespace ksys::phys