1#ifndef SEAD_CONTROLLER_BASE_H_
2#define SEAD_CONTROLLER_BASE_H_
4#include <math/seadBoundBox.h>
5#include <math/seadVector.h>
6#include <prim/seadBitFlag.h>
21 ControllerBase(s32 padBitMax, s32 leftStickCrossStartBit, s32 rightStickCrossStartBit, s32 touchKeyBit);
30 u32 trig = getTrigMask();
31 u32 repeat = getRepeatMask();
63 bool isHold(u32 mask)
const {
return mask & getHoldMask(); }
64 bool isTrig(u32 mask)
const {
return mask & getTrigMask(); }
65 bool isHoldAll(u32 mask)
const {
return (mask & getHoldMask()) == mask; }
66 bool isRelease(u32 mask)
const {
return mask & getReleaseMask(); }
67 bool isRepeat(u32 mask)
const {
return mask & getRepeatMask(); }
70 void setPadRepeat(u32 mask, u8 delay_frame, u8 pulse_frame);
135static_assert(
sizeof(
ControllerBase) == 0x130,
"sead::ControllerBase size mismatch");
Definition seadControllerBase.h:13
const Vector2f & getRightStick() const
Definition seadControllerBase.h:38
void setIdleBase_()
Definition seadControllerBase.cpp:260
f32 getRightAnalogTrigger() const
Definition seadControllerBase.h:40
f32 mRightStickReleaseThreshold
Definition seadControllerBase.h:119
u32 getReleaseMask() const
Definition seadControllerBase.h:25
Vector2i mPointerS32
Definition seadControllerBase.h:111
f32 mLeftStickHoldThreshold
Definition seadControllerBase.h:116
void updateDerivativeParams_(u32 prev_hold, bool prev_pointer_on)
Definition seadControllerBase.cpp:88
bool isIdleBase_()
Definition seadControllerBase.cpp:250
s32 mRightStickCrossStartBit
Definition seadControllerBase.h:122
f32 mLeftAnalogTrigger
Definition seadControllerBase.h:129
@ cCrossDown
Definition seadControllerBase.h:102
@ cCrossUp
Definition seadControllerBase.h:101
@ cCrossLeft
Definition seadControllerBase.h:103
@ cCrossRight
Definition seadControllerBase.h:104
Vector2f mLeftStick
Definition seadControllerBase.h:127
u32 createStickCrossMask_()
Definition seadControllerBase.cpp:279
u32 getTrigMaskWithRepeat() const
Definition seadControllerBase.h:28
bool isTrigWithRepeat(u32 mask) const
Definition seadControllerBase.h:68
const Vector2f & getLeftStick() const
Definition seadControllerBase.h:37
static const Vector2f cInvalidPointer
Definition seadControllerBase.h:17
void setPadRepeat(u32 mask, u8 delay_frame, u8 pulse_frame)
Definition seadControllerBase.cpp:144
u32 getStickHold_(u32 prev_hold, const Vector2f &stick, f32 hold_threshold, f32 release_threshold, s32 start_bit)
Definition seadControllerBase.cpp:191
BitFlag32 mPadRelease
Definition seadControllerBase.h:108
u8 mPadRepeatDelays[cPadIdx_MaxBase]
Definition seadControllerBase.h:114
PointerFlagMask
Definition seadControllerBase.h:92
@ cPointerOffNow
Definition seadControllerBase.h:95
@ cPointerOnNow
Definition seadControllerBase.h:94
@ cPointerUnkFlag3
Definition seadControllerBase.h:96
@ cPointerOn
Definition seadControllerBase.h:93
s32 mPadBitMax
Definition seadControllerBase.h:120
bool isRelease(u32 mask) const
Definition seadControllerBase.h:66
bool isHoldAll(u32 mask) const
Definition seadControllerBase.h:65
bool isPointerOnNow() const
Definition seadControllerBase.h:59
bool isPointerOffNow() const
Definition seadControllerBase.h:60
f32 mRightStickHoldThreshold
Definition seadControllerBase.h:117
BitFlag32 mPointerFlag
Definition seadControllerBase.h:110
BitFlag32 mPadHold
Definition seadControllerBase.h:125
ControllerBase(s32 padBitMax, s32 leftStickCrossStartBit, s32 rightStickCrossStartBit, s32 touchKeyBit)
Definition seadControllerBase.cpp:12
u32 getTrigMask() const
Definition seadControllerBase.h:24
bool isRepeat(u32 mask) const
Definition seadControllerBase.h:67
bool isHold(u32 mask) const
Definition seadControllerBase.h:63
@ cPadIdx_MaxBase
Definition seadControllerBase.h:88
void setLeftStickCrossThreshold(f32 hold, f32 release)
Definition seadControllerBase.cpp:158
BitFlag32 mPadRepeat
Definition seadControllerBase.h:109
static const f32 cStickHoldThresholdDefault
Definition seadControllerBase.h:15
bool isTrig(u32 mask) const
Definition seadControllerBase.h:64
u8 mPadRepeatPulses[cPadIdx_MaxBase]
Definition seadControllerBase.h:115
void setPointerBound(const BoundBox2f &bound)
Definition seadControllerBase.cpp:184
bool isPointerUnkFlag3() const
Definition seadControllerBase.h:61
f32 mLeftStickReleaseThreshold
Definition seadControllerBase.h:118
const BoundBox2f & getPointerBound() const
Definition seadControllerBase.h:76
BitFlag32 mPadTrig
Definition seadControllerBase.h:107
s32 mLeftStickCrossStartBit
Definition seadControllerBase.h:121
f32 getLeftAnalogTrigger() const
Definition seadControllerBase.h:39
static const f32 cStickReleaseThresholdDefault
Definition seadControllerBase.h:16
void setPointerWithBound_(bool is_on, bool touchkey_hold, const Vector2f &pos)
Definition seadControllerBase.cpp:49
s32 mIdleFrame
Definition seadControllerBase.h:124
s32 mTouchKeyBit
Definition seadControllerBase.h:123
BoundBox2f mPointerBound
Definition seadControllerBase.h:112
u32 mPadHoldCounts[cPadIdx_MaxBase]
Definition seadControllerBase.h:113
bool isPointerOn() const
Definition seadControllerBase.h:58
const Vector2i & getPointerPrev() const
Definition seadControllerBase.h:50
f32 mRightAnalogTrigger
Definition seadControllerBase.h:130
Vector2f mRightStick
Definition seadControllerBase.h:128
const Vector2f & getPointer() const
Definition seadControllerBase.h:42
static const Vector2i cInvalidPointerS32
Definition seadControllerBase.h:18
void setRightStickCrossThreshold(f32 hold, f32 release)
Definition seadControllerBase.cpp:171
u32 getRepeatMask() const
Definition seadControllerBase.h:26
u32 getHoldMask() const
Definition seadControllerBase.h:23
u32 getPadHoldCount(s32 bit) const
Definition seadControllerBase.cpp:138
Vector2f mPointer
Definition seadControllerBase.h:126
Definition seadControllerWrapper.h:9
Definition seadAssert.h:44
Vector2< f32 > Vector2f
Definition seadVector.h:238
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
Vector2< s32 > Vector2i
Definition seadVector.h:234
BoundBox2< f32 > BoundBox2f
Definition seadBoundBox.h:187