1#ifndef SEAD_CONTROLLER_H_
2#define SEAD_CONTROLLER_H_
8template <
typename T>
struct remove_pointer {
typedef T type; };
9template <
typename T>
struct remove_pointer<T*> {
typedef T type; };
10template <
typename T>
struct remove_pointer<T*
const> {
typedef T type; };
11template <
typename T>
struct remove_pointer<T*
volatile> {
typedef T type; };
12template <
typename T>
struct remove_pointer<T*
const volatile> {
typedef T type; };
16#include <container/seadOffsetList.h>
17#include <controller/seadControllerBase.h>
18#include <controller/seadControllerDefine.h>
19#include <prim/seadRuntimeTypeInfo.h>
120 template <
typename T>
133static_assert(
sizeof(
Controller) == 0x15C,
"sead::Controller size mismatch");
139 for (OffsetList<ControllerAddon>::iterator it = mAddons.begin(); it != mAddons.end(); ++it)
141 T addon = DynamicCast<
typename remove_pointer<T>::type>(&(*it));
Definition seadControllerAddon.h:14
Definition seadControllerBase.h:13
Definition seadControllerDefine.h:9
AddonId
Definition seadControllerDefine.h:41
ControllerId
Definition seadControllerDefine.h:12
Definition seadControllerMgr.h:17
Definition seadControllerWrapperBase.h:13
Definition seadController.h:28
ControllerDefine::ControllerId getId() const
Definition seadController.h:115
OffsetList< ControllerAddon > mAddons
Definition seadController.h:126
OffsetList< ControllerWrapperBase > mWrappers
Definition seadController.h:127
virtual void calc()
Definition seadController.cpp:19
Controller(ControllerMgr *mgr)
Definition seadController.cpp:8
PadIdx
Definition seadController.h:33
@ cPadIdx_Touch
Definition seadController.h:51
@ cPadIdx_Start
Definition seadController.h:45
@ cPadIdx_C
Definition seadController.h:36
@ cPadIdx_LeftStickDown
Definition seadController.h:57
@ cPadIdx_Select
Definition seadController.h:46
@ cPadIdx_B
Definition seadController.h:35
@ cPadIdx_Plus
Definition seadController.h:44
@ cPadIdx_LeftStickRight
Definition seadController.h:59
@ cPadIdx_Left
Definition seadController.h:54
@ cPadIdx_LeftStickLeft
Definition seadController.h:58
@ cPadIdx_Up
Definition seadController.h:52
@ cPadIdx_LeftStickUp
Definition seadController.h:56
@ cPadIdx_Minus
Definition seadController.h:43
@ cPadIdx_ZR
Definition seadController.h:48
@ cPadIdx_Right
Definition seadController.h:55
@ cPadIdx_2
Definition seadController.h:40
@ cPadIdx_R
Definition seadController.h:50
@ cPadIdx_Z
Definition seadController.h:39
@ cPadIdx_RightStickDown
Definition seadController.h:61
@ cPadIdx_L
Definition seadController.h:49
@ cPadIdx_RightStickLeft
Definition seadController.h:62
@ cPadIdx_RightStickUp
Definition seadController.h:60
@ cPadIdx_ZL
Definition seadController.h:47
@ cPadIdx_RightStickRight
Definition seadController.h:63
@ cPadIdx_Y
Definition seadController.h:38
@ cPadIdx_A
Definition seadController.h:34
@ cPadIdx_1
Definition seadController.h:41
@ cPadIdx_Down
Definition seadController.h:53
@ cPadIdx_Home
Definition seadController.h:42
@ cPadIdx_X
Definition seadController.h:37
@ cPadIdx_Max
Definition seadController.h:64
virtual ~Controller()
Definition seadController.h:104
virtual bool isIdle_()
Definition seadController.cpp:55
ControllerAddon * getAddon(ControllerDefine::AddonId id) const
Definition seadController.cpp:43
virtual void calcImpl_()=0
ControllerDefine::ControllerId mId
Definition seadController.h:124
virtual bool isConnected() const
Definition seadController.h:107
T getAddonAs() const
Definition seadController.h:137
virtual void setIdle_()
Definition seadController.cpp:60
ControllerMgr * mMgr
Definition seadController.h:125
PadFlag
Definition seadController.h:68
@ cPadFlag_Minus
Definition seadController.h:78
@ cPadFlag_A
Definition seadController.h:69
@ cPadFlag_All
Definition seadController.h:99
@ cPadFlag_R
Definition seadController.h:85
@ cPadFlag_RightStickUp
Definition seadController.h:95
@ cPadFlag_X
Definition seadController.h:72
@ cPadFlag_Y
Definition seadController.h:73
@ cPadFlag_Home
Definition seadController.h:77
@ cPadFlag_B
Definition seadController.h:70
@ cPadFlag_Z
Definition seadController.h:74
@ cPadFlag_Plus
Definition seadController.h:79
@ cPadFlag_RightStickLeft
Definition seadController.h:97
@ cPadFlag_Start
Definition seadController.h:80
@ cPadFlag_C
Definition seadController.h:71
@ cPadFlag_LeftStickUp
Definition seadController.h:91
@ cPadFlag_Up
Definition seadController.h:87
@ cPadFlag_L
Definition seadController.h:84
@ cPadFlag_Left
Definition seadController.h:89
@ cPadFlag_ZL
Definition seadController.h:82
@ cPadFlag_LeftStickDown
Definition seadController.h:92
@ cPadFlag_Touch
Definition seadController.h:86
@ cPadFlag_Down
Definition seadController.h:88
@ cPadFlag_LeftStickRight
Definition seadController.h:94
@ cPadFlag_Right
Definition seadController.h:90
@ cPadFlag_ZR
Definition seadController.h:83
@ cPadFlag_2
Definition seadController.h:75
@ cPadFlag_RightStickDown
Definition seadController.h:96
@ cPadFlag_LeftStickLeft
Definition seadController.h:93
@ cPadFlag_RightStickRight
Definition seadController.h:98
@ cPadFlag_1
Definition seadController.h:76
@ cPadFlag_Select
Definition seadController.h:81
Definition seadOffsetList.h:11
Definition seadAssert.h:44
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75