1#pragma once
2
3#include "controller/seadControllerAddon.h"
4
5namespace sead
6{
7class PatternRumbleAddon : public ControllerAddon
8{
9 SEAD_RTTI_OVERRIDE(PatternRumbleAddon, ControllerAddon)
10
11public:
12 explicit PatternRumbleAddon(Controller* controller);
13 ~PatternRumbleAddon() override = default;
14
15 bool calc() override;
16
17protected:
18 virtual void startRumbleImpl_() = 0;
19 virtual void stopRumbleImpl_() = 0;
20
21public:
22 bool isPatternEnable() const;
23 void startPattern(const char* pattern, u32 duration);
24 void stopPattern();
25
26protected:
27 const char* mPattern;
28 u32 mPatternIdx;
29 u32 mPatternDuration;
30};
31#ifdef cafe
32static_assert(sizeof(PatternRumbleAddon) == 0x20, "sead::PatternRumbleAddon size mismatch");
33#endif // cafe
34
35} // namespace sead
36