sead
Loading...
Searching...
No Matches
sead::Controller Class Referenceabstract

#include <seadController.h>

Inherits sead::ControllerBase.

Inherited by sead::CafeDRCController, and sead::CafeRemoteController.

Public Types

enum  PadIdx {
  cPadIdx_A = 0 , cPadIdx_B = 1 , cPadIdx_C = 2 , cPadIdx_X = 3 ,
  cPadIdx_Y = 4 , cPadIdx_Z = 5 , cPadIdx_2 = 6 , cPadIdx_1 = 7 ,
  cPadIdx_Home = 8 , cPadIdx_Minus = 9 , cPadIdx_Plus = 10 , cPadIdx_Start = 11 ,
  cPadIdx_Select = 12 , cPadIdx_ZL = cPadIdx_C , cPadIdx_ZR = cPadIdx_Z , cPadIdx_L = 13 ,
  cPadIdx_R = 14 , cPadIdx_Touch = 15 , cPadIdx_Up = 16 , cPadIdx_Down = 17 ,
  cPadIdx_Left = 18 , cPadIdx_Right = 19 , cPadIdx_LeftStickUp = 20 , cPadIdx_LeftStickDown = 21 ,
  cPadIdx_LeftStickLeft = 22 , cPadIdx_LeftStickRight = 23 , cPadIdx_RightStickUp = 24 , cPadIdx_RightStickDown = 25 ,
  cPadIdx_RightStickLeft = 26 , cPadIdx_RightStickRight = 27 , cPadIdx_Max = 28
}
enum  PadFlag {
  cPadFlag_A = 1 << cPadIdx_A , cPadFlag_B = 1 << cPadIdx_B , cPadFlag_C = 1 << cPadIdx_C , cPadFlag_X = 1 << cPadIdx_X ,
  cPadFlag_Y = 1 << cPadIdx_Y , cPadFlag_Z = 1 << cPadIdx_Z , cPadFlag_2 = 1 << cPadIdx_2 , cPadFlag_1 = 1 << cPadIdx_1 ,
  cPadFlag_Home = 1 << cPadIdx_Home , cPadFlag_Minus = 1 << cPadIdx_Minus , cPadFlag_Plus = 1 << cPadIdx_Plus , cPadFlag_Start = 1 << cPadIdx_Start ,
  cPadFlag_Select = 1 << cPadIdx_Select , cPadFlag_ZL = cPadFlag_C , cPadFlag_ZR = cPadFlag_Z , cPadFlag_L = 1 << cPadIdx_L ,
  cPadFlag_R = 1 << cPadIdx_R , cPadFlag_Touch = 1 << cPadIdx_Touch , cPadFlag_Up = 1 << cPadIdx_Up , cPadFlag_Down = 1 << cPadIdx_Down ,
  cPadFlag_Left = 1 << cPadIdx_Left , cPadFlag_Right = 1 << cPadIdx_Right , cPadFlag_LeftStickUp = 1 << cPadIdx_LeftStickUp , cPadFlag_LeftStickDown = 1 << cPadIdx_LeftStickDown ,
  cPadFlag_LeftStickLeft = 1 << cPadIdx_LeftStickLeft , cPadFlag_LeftStickRight = 1 << cPadIdx_LeftStickRight , cPadFlag_RightStickUp = 1 << cPadIdx_RightStickUp , cPadFlag_RightStickDown = 1 << cPadIdx_RightStickDown ,
  cPadFlag_RightStickLeft = 1 << cPadIdx_RightStickLeft , cPadFlag_RightStickRight = 1 << cPadIdx_RightStickRight , cPadFlag_All = (1 << cPadIdx_Max) - 1
}

Public Member Functions

 Controller (ControllerMgr *mgr)
virtual ~Controller ()
virtual void calc ()
virtual bool isConnected () const
ControllerDefine::ControllerId getId () const
ControllerAddongetAddon (ControllerDefine::AddonId id) const
template<typename T>
getAddonAs () const
Public Member Functions inherited from sead::ControllerBase
 ControllerBase (s32 padBitMax, s32 leftStickCrossStartBit, s32 rightStickCrossStartBit, s32 touchKeyBit)
u32 getHoldMask () const
u32 getTrigMask () const
u32 getReleaseMask () const
u32 getRepeatMask () const
u32 getTrigMaskWithRepeat () const
u32 getPadHoldCount (s32 bit) const
const Vector2fgetLeftStick () const
const Vector2fgetRightStick () const
f32 getLeftAnalogTrigger () const
f32 getRightAnalogTrigger () const
const Vector2fgetPointer () const
const Vector2igetPointerPrev () const
bool isPointerOn () const
bool isPointerOnNow () const
bool isPointerOffNow () const
bool isPointerUnkFlag3 () const
bool isHold (u32 mask) const
bool isTrig (u32 mask) const
bool isHoldAll (u32 mask) const
bool isRelease (u32 mask) const
bool isRepeat (u32 mask) const
bool isTrigWithRepeat (u32 mask) const
void setPadRepeat (u32 mask, u8 delay_frame, u8 pulse_frame)
void setLeftStickCrossThreshold (f32 hold, f32 release)
void setRightStickCrossThreshold (f32 hold, f32 release)
void setPointerBound (const BoundBox2f &bound)
const BoundBox2fgetPointerBound () const

Protected Member Functions

virtual void calcImpl_ ()=0
virtual bool isIdle_ ()
virtual void setIdle_ ()
Protected Member Functions inherited from sead::ControllerBase
bool isIdleBase_ ()
void setIdleBase_ ()
void setPointerWithBound_ (bool is_on, bool touchkey_hold, const Vector2f &pos)
void updateDerivativeParams_ (u32 prev_hold, bool prev_pointer_on)
u32 getStickHold_ (u32 prev_hold, const Vector2f &stick, f32 hold_threshold, f32 release_threshold, s32 start_bit)
u32 createStickCrossMask_ ()

Protected Attributes

ControllerDefine::ControllerId mId
ControllerMgrmMgr
OffsetList< ControllerAddonmAddons
OffsetList< ControllerWrapperBasemWrappers
Protected Attributes inherited from sead::ControllerBase
BitFlag32 mPadTrig
BitFlag32 mPadRelease
BitFlag32 mPadRepeat
BitFlag32 mPointerFlag
Vector2i mPointerS32
BoundBox2f mPointerBound
u32 mPadHoldCounts [cPadIdx_MaxBase]
u8 mPadRepeatDelays [cPadIdx_MaxBase]
u8 mPadRepeatPulses [cPadIdx_MaxBase]
f32 mLeftStickHoldThreshold
f32 mRightStickHoldThreshold
f32 mLeftStickReleaseThreshold
f32 mRightStickReleaseThreshold
s32 mPadBitMax
s32 mLeftStickCrossStartBit
s32 mRightStickCrossStartBit
s32 mTouchKeyBit
s32 mIdleFrame
BitFlag32 mPadHold
Vector2f mPointer
Vector2f mLeftStick
Vector2f mRightStick
f32 mLeftAnalogTrigger
f32 mRightAnalogTrigger

Friends

class ControllerWrapperBase
class ControllerMgr

Additional Inherited Members

Static Public Attributes inherited from sead::ControllerBase
static const f32 cStickHoldThresholdDefault = 0.5f
static const f32 cStickReleaseThresholdDefault = 0.25f
static const Vector2f cInvalidPointer
static const Vector2i cInvalidPointerS32
Protected Types inherited from sead::ControllerBase
enum  { cPadIdx_MaxBase = 32 }
enum  PointerFlagMask { cPointerOn = 1 << 0 , cPointerOnNow = 1 << 1 , cPointerOffNow = 1 << 2 , cPointerUnkFlag3 = 1 << 3 }
enum  { cCrossUp , cCrossDown , cCrossLeft , cCrossRight }

Member Enumeration Documentation

◆ PadIdx

Enumerator
cPadIdx_A 
cPadIdx_B 
cPadIdx_C 
cPadIdx_X 
cPadIdx_Y 
cPadIdx_Z 
cPadIdx_2 
cPadIdx_1 
cPadIdx_Home 
cPadIdx_Minus 
cPadIdx_Plus 
cPadIdx_Start 
cPadIdx_Select 
cPadIdx_ZL 
cPadIdx_ZR 
cPadIdx_L 
cPadIdx_R 
cPadIdx_Touch 
cPadIdx_Up 
cPadIdx_Down 
cPadIdx_Left 
cPadIdx_Right 
cPadIdx_LeftStickUp 
cPadIdx_LeftStickDown 
cPadIdx_LeftStickLeft 
cPadIdx_LeftStickRight 
cPadIdx_RightStickUp 
cPadIdx_RightStickDown 
cPadIdx_RightStickLeft 
cPadIdx_RightStickRight 
cPadIdx_Max 

◆ PadFlag

Enumerator
cPadFlag_A 
cPadFlag_B 
cPadFlag_C 
cPadFlag_X 
cPadFlag_Y 
cPadFlag_Z 
cPadFlag_2 
cPadFlag_1 
cPadFlag_Home 
cPadFlag_Minus 
cPadFlag_Plus 
cPadFlag_Start 
cPadFlag_Select 
cPadFlag_ZL 
cPadFlag_ZR 
cPadFlag_L 
cPadFlag_R 
cPadFlag_Touch 
cPadFlag_Up 
cPadFlag_Down 
cPadFlag_Left 
cPadFlag_Right 
cPadFlag_LeftStickUp 
cPadFlag_LeftStickDown 
cPadFlag_LeftStickLeft 
cPadFlag_LeftStickRight 
cPadFlag_RightStickUp 
cPadFlag_RightStickDown 
cPadFlag_RightStickLeft 
cPadFlag_RightStickRight 
cPadFlag_All 

Constructor & Destructor Documentation

◆ Controller()

sead::Controller::Controller ( ControllerMgr * mgr)

◆ ~Controller()

virtual sead::Controller::~Controller ( )
inlinevirtual

Member Function Documentation

◆ calc()

void sead::Controller::calc ( )
virtual

◆ isConnected()

virtual bool sead::Controller::isConnected ( ) const
inlinevirtual

◆ calcImpl_()

virtual void sead::Controller::calcImpl_ ( )
protectedpure virtual

◆ isIdle_()

bool sead::Controller::isIdle_ ( )
protectedvirtual

◆ setIdle_()

void sead::Controller::setIdle_ ( )
protectedvirtual

◆ getId()

ControllerDefine::ControllerId sead::Controller::getId ( ) const
inline

◆ getAddon()

ControllerAddon * sead::Controller::getAddon ( ControllerDefine::AddonId id) const

◆ getAddonAs()

template<typename T>
T sead::Controller::getAddonAs ( ) const

◆ ControllerWrapperBase

friend class ControllerWrapperBase
friend

◆ ControllerMgr

friend class ControllerMgr
friend

Member Data Documentation

◆ mId

ControllerDefine::ControllerId sead::Controller::mId
protected

◆ mMgr

ControllerMgr* sead::Controller::mMgr
protected

◆ mAddons

OffsetList<ControllerAddon> sead::Controller::mAddons
protected

◆ mWrappers

OffsetList<ControllerWrapperBase> sead::Controller::mWrappers
protected