1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7class LayoutActor;
8class PadRumbleDirector;
9
10struct PadRumbleParam {
11 PadRumbleParam(f32 near = 0.0f, f32 far = 3000.0f, f32 volumeLeft = 1.0f,
12 f32 volumeRight = 1.0f, f32 pitchLeft = 1.0f, f32 pitchRight = 1.0f, s32 _18 = 0,
13 bool isUseController = false, bool _1d = false)
14 : near(near), far(far), volumeLeft(volumeLeft), volumeRight(volumeRight),
15 pitchLeft(pitchLeft), pitchRight(pitchRight), field_18(_18),
16 isUseController(isUseController), field_1d(_1d) {}
17
18 void setVolumeByBalance(f32 balance);
19
20 f32 near;
21 f32 far;
22 f32 volumeLeft;
23 f32 volumeRight;
24 f32 pitchLeft;
25 f32 pitchRight;
26 s32 field_18;
27 bool isUseController;
28 bool field_1d;
29};
30
31} // namespace al
32
33namespace alPadRumbleFunction {
34al::PadRumbleDirector* getPadRumbleDirector(const al::LiveActor* actor);
35al::PadRumbleDirector* getPadRumbleDirector(const al::LayoutActor* layoutActor);
36void startPadRumble(al::PadRumbleDirector* director, const sead::Vector3f& position,
37 const char* name, f32 near, f32 far, s32 port = -1);
38void startPadRumbleWithParam(al::PadRumbleDirector* director, const sead::Vector3f& position,
39 const char* name, const al::PadRumbleParam& rumbleParam,
40 s32 port = -1);
41void startPadRumble(const al::LiveActor* actor, const char* name, f32 near, f32 far, s32 port = -1);
42void startPadRumblePos(const al::LiveActor* actor, const sead::Vector3f& position, const char* name,
43 f32 near, f32 far, s32 port = -1);
44void startPadRumbleWithParam(const al::LiveActor* actor, const sead::Vector3f& position,
45 const char* name, const al::PadRumbleParam& rumbleParam,
46 s32 port = -1);
47void startPadRumbleNo3D(al::PadRumbleDirector* director, const char* name, s32 port = -1);
48void startPadRumbleNo3DWithParam(al::PadRumbleDirector* director, const char* name,
49 const al::PadRumbleParam& rumbleParam, s32 port = -1);
50void startPadRumbleNo3DWithParam(al::PadRumbleDirector* director, const char* name, f32 volumeLeft,
51 f32 volumeRight, f32 pitchLeft, f32 pitchRight, s32 port = -1);
52void startPadRumbleNo3D(const al::LiveActor* actor, const char* name, s32 port = -1);
53void startPadRumbleNo3DWithParam(const al::LiveActor* actor, const char* name,
54 const al::PadRumbleParam& rumbleParam, s32 port = -1);
55void startPadRumbleNo3DWithParam(const al::LiveActor* actor, const char* name, f32 volumeLeft,
56 f32 volumeRight, f32 pitchLeft, f32 pitchRight, s32 port = -1);
57void stopPadRumbleOneTime(al::PadRumbleDirector* director, const char* name, s32 port = -1);
58void stopPadRumbleOneTime(const al::LiveActor* actor, const char* name, s32 port = -1);
59void startPadRumbleLoop(al::PadRumbleDirector* director, const char* name,
60 const sead::Vector3f* position, f32 near, f32 far, s32 port = -1);
61void startPadRumbleLoopWithParam(al::PadRumbleDirector* director, const char* name,
62 const sead::Vector3f* position,
63 const al::PadRumbleParam& rumbleParam, s32 port = -1);
64void startPadRumbleLoop(const al::LiveActor* actor, const char* name,
65 const sead::Vector3f* position, f32 near, f32 far, s32 port = -1);
66void startPadRumbleLoopWithParam(const al::LiveActor* actor, const char* name,
67 const sead::Vector3f* position,
68 const al::PadRumbleParam& rumbleParam, s32 port = -1);
69void startPadRumbleLoopNo3D(const al::LiveActor* actor, const char* name,
70 const sead::Vector3f* position, s32 port = -1);
71void startPadRumbleLoopNo3DWithParam(al::PadRumbleDirector* director, const char* name,
72 const sead::Vector3f* position,
73 const al::PadRumbleParam& rumbleParam, s32 port = -1);
74void startPadRumbleLoopNo3DWithParam(const al::LiveActor* actor, const char* name,
75 const sead::Vector3f* position,
76 const al::PadRumbleParam& rumbleParam, s32 port = -1);
77void stopPadRumbleLoop(al::PadRumbleDirector* director, const char* name,
78 const sead::Vector3f* position, s32 port = -1);
79void stopPadRumbleLoop(const al::LiveActor* actor, const char* name, const sead::Vector3f* position,
80 s32 port = -1);
81bool checkIsAlivePadRumbleLoop(al::PadRumbleDirector* director, const char* name,
82 const sead::Vector3f* position, s32 port = -1);
83bool checkIsAlivePadRumbleLoop(const al::LiveActor* actor, const char* name,
84 const sead::Vector3f* position, s32 port = -1);
85void startPadRumbleLoopControlable(const al::LiveActor* actor, const char* name,
86 const sead::Vector3f* position, s32 port = -1);
87void changePadRumbleLoopVolmue(const al::LiveActor* actor, const char* name,
88 const sead::Vector3f* position, f32 volumeLeft, f32 volumeRight,
89 s32 port = -1);
90void changePadRumbleLoopVolmueEaseInRange(const al::LiveActor* actor, const char* name,
91 const sead::Vector3f* position, f32 time, f32 startTime,
92 f32 stopTime, f32 volumeLeft, f32 volumeRight,
93 s32 port = -1);
94void changePadRumbleLoopPitch(const al::LiveActor* actor, const char* name,
95 const sead::Vector3f* position, f32 pitchLeft, f32 pitchRight,
96 s32 port = -1);
97void startPadRumbleDirectValue(const al::LiveActor* actor, f32 a, f32 b, f32 c, f32 d, f32 e, f32 f,
98 s32 port = -1);
99void stopPadRumbleDirectValue(const al::LiveActor* actor, s32 port = -1);
100void startPadRumbleWithVolume(const al::LiveActor* actor, const char* name, f32 volumeLeft,
101 f32 volumeRight, s32 port = -1);
102void startPadRumbleWithVolume(al::PadRumbleDirector* director, const char* name, f32 volumeLeft,
103 f32 volumeRight, s32 port = -1);
104void makePadRumbleParamNearFarVolume(al::PadRumbleParam* rumbleParam, f32 near, f32 far,
105 f32 volume);
106void makePadRumbleParamNearFarVolumeLR(al::PadRumbleParam* rumbleParam, f32 near, f32 far,
107 f32 volumeLeft, f32 volumeRight);
108void makePadRumbleParamNearFarVolumePitch(al::PadRumbleParam* rumbleParam, f32 near, f32 far,
109 f32 volume, f32 pitch);
110void makePadRumbleParamNearFarVolumePitchLR(al::PadRumbleParam* rumbleParam, f32 near, f32 far,
111 f32 volumeLeft, f32 volumeRight, f32 pitchLeft,
112 f32 pitchRight);
113} // namespace alPadRumbleFunction
114