11import { Controller , type OnInit , type OnRender } from "@flamework/core" ;
22import { UserInputService as UserInput , Workspace as World } from "@rbxts/services" ;
33import { RaycastParamsBuilder } from "@rbxts/builders" ;
4- import { Context as InputContext } from "@rbxts/gamejoy" ;
5- import { Axis } from "@rbxts/gamejoy/out/Actions" ;
64import Charm , { atom } from "@rbxts/charm" ;
75import Signal from "@rbxts/signal" ;
86
9- import { OnInput , OnAxisInput , OnInputRelease } from "client/decorators" ;
7+ import { OnInput , OnAxisInput , OnInputRelease , inputManager } from "client/decorators" ;
108import { Player } from "client/utility" ;
9+ import { AxisAction , AxisActionBuilder , StandardActionBuilder } from "@rbxts/mechanism" ;
10+ import { ActionID } from "./input" ;
1111
1212const { abs } = math ;
1313
@@ -24,14 +24,17 @@ export class MouseController implements OnInit, OnRender {
2424 public readonly behavior = atom < Enum . MouseBehavior > ( Enum . MouseBehavior . Default ) ;
2525
2626 private readonly playerMouse = Player . GetMouse ( ) ;
27- private readonly rightThumbstickAxis = new Axis ( " Thumbstick2" ) ;
27+ private readonly rightThumbstickAxis = new AxisActionBuilder ( Enum . KeyCode . Thumbstick2 ) ;
2828 private readonly thumbstickDeadzone = 0.1 ;
2929
3030 private lastInput ?: Enum . UserInputType ;
3131 private delta = new Vector2 ;
3232
3333 public onInit ( ) : void {
34- new InputContext ( ) . Bind ( this . rightThumbstickAxis , ( ) => { /* this is only so that the Position property computes */ } ) ;
34+ inputManager
35+ . bind ( this . rightThumbstickAxis )
36+ . bind ( new StandardActionBuilder ( Enum . KeyCode . ButtonL2 ) . setID ( ActionID . LeftTrigger ) )
37+ . bind ( new StandardActionBuilder ( Enum . KeyCode . ButtonR2 ) . setID ( ActionID . RightTrigger ) ) ;
3538
3639 // Touch controls
3740 UserInput . TouchPinch . Connect ( ( _ , scale ) => this . scrolled . Fire ( ( scale < 1 ? 1 : - 1 ) * abs ( scale - 2 ) ) ) ;
@@ -51,8 +54,15 @@ export class MouseController implements OnInit, OnRender {
5154 this . delta = UserInput . GetMouseDelta ( ) ;
5255 break ;
5356 }
54- case Enum . UserInputType . Gamepad1 : {
55- const { X, Y } = this . rightThumbstickAxis . Position ;
57+ case Enum . UserInputType . Gamepad1 :
58+ case Enum . UserInputType . Gamepad2 :
59+ case Enum . UserInputType . Gamepad3 :
60+ case Enum . UserInputType . Gamepad4 :
61+ case Enum . UserInputType . Gamepad5 :
62+ case Enum . UserInputType . Gamepad6 :
63+ case Enum . UserInputType . Gamepad7 :
64+ case Enum . UserInputType . Gamepad8 : {
65+ const { X, Y } = this . rightThumbstickAxis . position ;
5666 this . delta = new Vector2 (
5767 this . applyThumbstickDeadzone ( X ) ,
5868 this . applyThumbstickDeadzone ( - Y )
@@ -90,74 +100,83 @@ export class MouseController implements OnInit, OnRender {
90100 }
91101
92102 /** @hidden */
93- @OnAxisInput ( " MouseWheel" )
94- public onScroll ( axis : Axis < "MouseWheel" > ) : void {
95- this . scrolled . Fire ( - axis . Position . Z ) ;
103+ @OnAxisInput ( new AxisActionBuilder ( Enum . UserInputType . MouseWheel ) )
104+ public onScroll ( axis : AxisAction ) : void {
105+ this . scrolled . Fire ( - axis . position . Z ) ;
96106 }
97107
98108 /** @hidden */
99- @OnAxisInput ( "ButtonR2" , "axisR2" )
100- public onR2AxisChange ( axis : Axis < "ButtonR2" > ) : void {
109+ @OnAxisInput ( new AxisActionBuilder ( Enum . KeyCode . ButtonR2 ) )
110+ public onR2AxisChange ( axis : AxisAction ) : void {
101111 this . triggerAxesChange ( axis , this . isLmbDown ) ;
102112 }
103113
104114 /** @hidden */
105- @OnAxisInput ( "ButtonL2" , "axisL2" )
106- public onL2AxisChange ( axis : Axis < "ButtonL2" > ) : void {
115+ @OnAxisInput ( new AxisActionBuilder ( Enum . KeyCode . ButtonL2 ) )
116+ public onL2AxisChange ( axis : AxisAction ) : void {
107117 this . triggerAxesChange ( axis , this . isLmbDown ) ;
108118 }
109119
110120 /** @hidden */
111- @OnInputRelease ( "axisR2" )
121+ @OnInputRelease ( ActionID . RightTrigger )
112122 public onR2Release ( ) : void {
113123 this . rmbUp ( ) ;
114124 }
115125
116126 /** @hidden */
117- @OnInputRelease ( "axisL2" )
127+ @OnInputRelease ( ActionID . LeftTrigger )
118128 public onL2Release ( ) : void {
119129 this . lmbUp ( ) ;
120130 }
121131
122132 /** @hidden */
123- @OnInputRelease ( "mmb" )
133+ @OnInputRelease ( ActionID . MMB )
124134 public mmbUp ( ) : void {
125135 this . isMmbDown ( false ) ;
126136 }
127137
128138 /** @hidden */
129- @OnInput ( "MouseButton3" , "mmb" )
139+ @OnInput (
140+ new StandardActionBuilder ( Enum . KeyCode . MouseMiddleButton )
141+ . setID ( ActionID . MMB )
142+ )
130143 public mmbDown ( ) : void {
131144 this . isMmbDown ( true ) ;
132145 }
133146
134147 /** @hidden */
135- @OnInputRelease ( "rmb" )
148+ @OnInputRelease ( ActionID . RMB )
136149 public rmbUp ( ) : void {
137150 this . isRmbDown ( false ) ;
138151 }
139152
140153 /** @hidden */
141- @OnInput ( "MouseButton2" , "rmb" )
154+ @OnInput (
155+ new StandardActionBuilder ( Enum . KeyCode . MouseRightButton )
156+ . setID ( ActionID . RMB )
157+ )
142158 public rmbDown ( ) : void {
143159 this . isRmbDown ( true ) ;
144160 }
145161
146162 /** @hidden */
147- @OnInputRelease ( "lmb" )
163+ @OnInputRelease ( ActionID . LMB )
148164 public lmbUp ( ) : void {
149165 this . isLmbDown ( false ) ;
150166 }
151167
152168 /** @hidden */
153- @OnInput ( "MouseButton1" , "lmb" )
169+ @OnInput (
170+ new StandardActionBuilder ( Enum . KeyCode . MouseLeftButton )
171+ . setID ( ActionID . LMB )
172+ )
154173 public lmbDown ( ) : void {
155174 this . isLmbDown ( true ) ;
156175 }
157176
158- private triggerAxesChange ( axis : Axis < "ButtonL2" | "ButtonR2" > , isDown : Charm . Atom < boolean > ) : void {
159- if ( axis . Delta . Z < 0 ) return void isDown ( false ) ;
160- if ( axis . Delta . Z < 0.05 ) return ;
177+ private triggerAxesChange ( axis : AxisAction , isDown : Charm . Atom < boolean > ) : void {
178+ if ( axis . delta . Z < 0 ) return void isDown ( false ) ;
179+ if ( axis . delta . Z < 0.05 ) return ;
161180 isDown ( true ) ;
162181 }
163182
0 commit comments