1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6#include "Library/HostIO/HioNode.h"
7
8namespace al {
9class AudioDirector;
10class ModelKeeper;
11class CameraDirector;
12class AudioEventController;
13class AudioEffectController;
14class AudioRequestKeeperSyncedBgm;
15class AudioMic;
16class SeKeeper;
17class BgmKeeper;
18
19class AudioKeeper : public IUseHioNode {
20public:
21 AudioKeeper(const AudioDirector*);
22 virtual ~AudioKeeper();
23
24 void initSeKeeper(const AudioDirector*, const char*, const sead::Vector3f*,
25 const sead::Matrix34f*, const ModelKeeper*, CameraDirector*);
26 void initBgmKeeper(const AudioDirector*, const char*);
27 void validate();
28 void invalidate();
29 void startClipped();
30 void endClipped();
31 void appear();
32 void kill();
33
34 AudioEventController* getAudioEventController() const { return mAudioEventController; };
35
36 AudioEffectController* getAudioEffectController() const { return mAudioEffectController; };
37
38 AudioRequestKeeperSyncedBgm* getAudioRequestKeeperSyncedBgm() const {
39 return mAudioRequestKeeperSyncedBgm;
40 };
41
42 SeKeeper* getSeKeeper() const { return mSeKeeper; };
43
44 BgmKeeper* getBgmKeeper() const { return mBgmKeeper; };
45
46 AudioMic* getAudioMic() const { return mAudioMic; };
47
48private:
49 AudioEventController* mAudioEventController;
50 AudioEffectController* mAudioEffectController;
51 AudioRequestKeeperSyncedBgm* mAudioRequestKeeperSyncedBgm;
52 SeKeeper* mSeKeeper;
53 BgmKeeper* mBgmKeeper;
54 AudioMic* mAudioMic;
55};
56
57static_assert(sizeof(AudioKeeper) == 0x38);
58
59} // namespace al
60
61namespace alAudioKeeperFunction {
62al::AudioKeeper* createAudioKeeper(const al::AudioDirector*, const char*, const char*);
63}
64