game.input.*: factor out callback implementations to separate words so they optimize
parent
1c08fde381
commit
4159cfcc7b
|
@ -92,8 +92,7 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
||||||
+dinput+ get swap device-guid
|
+dinput+ get swap device-guid
|
||||||
IDirectInput8W::GetDeviceStatus S_OK = ;
|
IDirectInput8W::GetDeviceStatus S_OK = ;
|
||||||
|
|
||||||
: find-device-axes-callback ( -- alien )
|
: (find-device-axes-callback) ( lpddoi pvRef -- BOOL )
|
||||||
[ ! ( lpddoi pvRef -- BOOL )
|
|
||||||
+controller-devices+ get at
|
+controller-devices+ get at
|
||||||
swap guidType>> {
|
swap guidType>> {
|
||||||
{ [ dup GUID_XAxis = ] [ drop 0.0 >>x ] }
|
{ [ dup GUID_XAxis = ] [ drop 0.0 >>x ] }
|
||||||
|
@ -105,8 +104,10 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
||||||
{ [ dup GUID_Slider = ] [ drop 0.0 >>slider ] }
|
{ [ dup GUID_Slider = ] [ drop 0.0 >>slider ] }
|
||||||
[ drop ]
|
[ drop ]
|
||||||
} cond drop
|
} cond drop
|
||||||
DIENUM_CONTINUE
|
DIENUM_CONTINUE ;
|
||||||
] LPDIENUMDEVICEOBJECTSCALLBACKW ;
|
|
||||||
|
: find-device-axes-callback ( -- alien )
|
||||||
|
[ (find-device-axes-callback) ] LPDIENUMDEVICEOBJECTSCALLBACKW ;
|
||||||
|
|
||||||
: find-device-axes ( device controller-state -- controller-state )
|
: find-device-axes ( device controller-state -- controller-state )
|
||||||
swap [ +controller-devices+ get set-at ] 2keep
|
swap [ +controller-devices+ get set-at ] 2keep
|
||||||
|
@ -139,11 +140,12 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
||||||
[ device-guid +controller-guids+ get delete-at ]
|
[ device-guid +controller-guids+ get delete-at ]
|
||||||
[ com-release ] tri ;
|
[ com-release ] tri ;
|
||||||
|
|
||||||
: find-controller-callback ( -- alien )
|
: (find-controller-callback) ( lpddi pvRef -- BOOL )
|
||||||
[ ! ( lpddi pvRef -- BOOL )
|
|
||||||
drop guidInstance>> add-controller
|
drop guidInstance>> add-controller
|
||||||
DIENUM_CONTINUE
|
DIENUM_CONTINUE ;
|
||||||
] LPDIENUMDEVICESCALLBACKW ; inline
|
|
||||||
|
: find-controller-callback ( -- alien )
|
||||||
|
[ (find-controller-callback) ] LPDIENUMDEVICESCALLBACKW ;
|
||||||
|
|
||||||
: find-controllers ( -- )
|
: find-controllers ( -- )
|
||||||
+dinput+ get DI8DEVCLASS_GAMECTRL find-controller-callback
|
+dinput+ get DI8DEVCLASS_GAMECTRL find-controller-callback
|
||||||
|
|
|
@ -251,33 +251,36 @@ M: iokit-game-input-backend reset-mouse
|
||||||
2dup length >
|
2dup length >
|
||||||
[ set-length ] [ 2drop ] if ;
|
[ set-length ] [ 2drop ] if ;
|
||||||
|
|
||||||
: device-matched-callback ( -- alien )
|
:: (device-matched-callback) ( context result sender device -- )
|
||||||
[| context result sender device |
|
|
||||||
{
|
{
|
||||||
|
{ [ device mouse-device? ] [ device ?add-mouse-buttons ] }
|
||||||
{ [ device controller-device? ] [
|
{ [ device controller-device? ] [
|
||||||
device <device-controller-state>
|
device <device-controller-state>
|
||||||
device +controller-states+ get set-at
|
device +controller-states+ get set-at
|
||||||
] }
|
] }
|
||||||
{ [ device mouse-device? ] [ device ?add-mouse-buttons ] }
|
|
||||||
[ ]
|
[ ]
|
||||||
} cond
|
} cond ;
|
||||||
] IOHIDDeviceCallback ;
|
|
||||||
|
: device-matched-callback ( -- alien )
|
||||||
|
[ (device-matched-callback) ] IOHIDDeviceCallback ;
|
||||||
|
|
||||||
|
:: (device-removed-callback) ( context result sender device -- )
|
||||||
|
device +controller-states+ get delete-at ;
|
||||||
|
|
||||||
: device-removed-callback ( -- alien )
|
: device-removed-callback ( -- alien )
|
||||||
[| context result sender device |
|
[ (device-removed-callback) ] IOHIDDeviceCallback ;
|
||||||
device +controller-states+ get delete-at
|
|
||||||
] IOHIDDeviceCallback ;
|
|
||||||
|
|
||||||
: device-input-callback ( -- alien )
|
:: (device-input-callback) ( context result sender value -- )
|
||||||
[| context result sender value |
|
|
||||||
{
|
{
|
||||||
|
{ [ sender mouse-device? ] [ +mouse-state+ get value record-mouse ] }
|
||||||
{ [ sender controller-device? ] [
|
{ [ sender controller-device? ] [
|
||||||
sender +controller-states+ get at value record-controller
|
sender +controller-states+ get at value record-controller
|
||||||
] }
|
] }
|
||||||
{ [ sender mouse-device? ] [ +mouse-state+ get value record-mouse ] }
|
|
||||||
[ +keyboard-state+ get value record-keyboard ]
|
[ +keyboard-state+ get value record-keyboard ]
|
||||||
} cond
|
} cond ;
|
||||||
] IOHIDValueCallback ;
|
|
||||||
|
: device-input-callback ( -- alien )
|
||||||
|
[ (device-input-callback) ] IOHIDValueCallback ;
|
||||||
|
|
||||||
: initialize-variables ( manager -- )
|
: initialize-variables ( manager -- )
|
||||||
+hid-manager+ set-global
|
+hid-manager+ set-global
|
||||||
|
|
Loading…
Reference in New Issue