summaryrefslogtreecommitdiff
path: root/src/KingSystem/Physics/Cloth/physClothParam.h
blob: 84a269443e1cbc2e4aaffa34f38391526e2a62aa (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once

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

namespace ksys::phys {

struct ClothSubWindParam : agl::utl::ParameterObj {
    ClothSubWindParam();

    agl::utl::Parameter<sead::Vector3f> sub_wind_direction;
    agl::utl::Parameter<float> sub_wind_frequency;
    agl::utl::Parameter<float> sub_wind_speed;
};

struct ClothParam : agl::utl::ParameterObj {
    ClothParam();

    agl::utl::Parameter<float> wind_drag;
    agl::utl::Parameter<float> wind_frequency;
    agl::utl::Parameter<float> wind_min_speed;
    agl::utl::Parameter<float> wind_max_speed;
    agl::utl::Parameter<float> sub_wind_factor_main;
    agl::utl::Parameter<float> sub_wind_factor_add;
    agl::utl::Parameter<bool> wind_enable;
    agl::utl::Parameter<bool> writeback_to_local;
    agl::utl::Parameter<sead::SafeString> name;
    agl::utl::Parameter<sead::SafeString> base_bone;
};

struct ClothSetParam : agl::utl::ParameterList {
    ClothSetParam();
    ~ClothSetParam() override;
    ClothSetParam(const ClothSetParam&) = delete;
    auto operator=(const ClothSetParam&) = delete;

    bool parse(const agl::utl::ResParameterList& res_list, sead::Heap* heap);
    const ClothParam* getCloth(const sead::SafeString& name) const;

    agl::utl::ParameterObj cloth_header_obj;
    agl::utl::Parameter<sead::SafeString> cloth_setup_file_path;
    agl::utl::Parameter<int> cloth_num;
    sead::FixedSafeString<64> cloth_setup_file_name;
    ClothSubWindParam sub_wind;
    sead::Buffer<ClothParam> cloths;
};

}  // namespace ksys::phys