@@ -66,6 +66,27 @@ export interface PointerEventsSystem {
66
66
*/
67
67
removeOnPointerHoverLeave ( entity : Entity ) : void
68
68
69
+ /**
70
+ * @public
71
+ * Remove the callback for onPointerDrag event
72
+ * @param entity - Entity where the callback was attached
73
+ */
74
+ removeOnPointerDrag ( entity : Entity ) : void
75
+
76
+ /**
77
+ * @public
78
+ * Remove the callback for onPointerDragLocked event
79
+ * @param entity - Entity where the callback was attached
80
+ */
81
+ removeOnPointerDragLocked ( entity : Entity ) : void
82
+
83
+ /**
84
+ * @public
85
+ * Remove the callback for onPointerDragEnd event
86
+ * @param entity - Entity where the callback was attached
87
+ */
88
+ removeOnPointerDragEnd ( entity : Entity ) : void
89
+
69
90
/**
70
91
* @internal
71
92
* Execute callback when the user clicks the entity.
@@ -124,6 +145,34 @@ export interface PointerEventsSystem {
124
145
pointerData : { entity : Entity ; opts ?: Partial < EventSystemOptions > } ,
125
146
cb : EventSystemCallback
126
147
) : void
148
+
149
+ /**
150
+ * @public
151
+ * Execute callback when the user clicks and drags the pointer from inside the entity
152
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
153
+ * @param cb - Function to execute when click fires
154
+ */
155
+ onPointerDrag ( pointerData : { entity : Entity ; opts ?: Partial < EventSystemOptions > } , cb : EventSystemCallback ) : void
156
+
157
+ /**
158
+ * @public
159
+ * Execute callback when the user clicks and drags the pointer from inside the entity,
160
+ * locking the cursor in place
161
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
162
+ * @param cb - Function to execute when click fires
163
+ */
164
+ onPointerDragLocked (
165
+ pointerData : { entity : Entity ; opts ?: Partial < EventSystemOptions > } ,
166
+ cb : EventSystemCallback
167
+ ) : void
168
+
169
+ /**
170
+ * @public
171
+ * Execute callback when the user releases the button after a drag
172
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
173
+ * @param cb - Function to execute when click fires
174
+ */
175
+ onPointerDragEnd ( pointerData : { entity : Entity ; opts ?: Partial < EventSystemOptions > } , cb : EventSystemCallback ) : void
127
176
}
128
177
129
178
/**
@@ -138,7 +187,10 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
138
187
Down ,
139
188
Up ,
140
189
HoverEnter ,
141
- HoverLeave
190
+ HoverLeave ,
191
+ Drag ,
192
+ DragLocked ,
193
+ DragEnd
142
194
}
143
195
type EventMapType = Map < EventType , { cb : EventSystemCallback ; opts : EventSystemOptions } >
144
196
@@ -177,6 +229,12 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
177
229
return PointerEventType . PET_HOVER_LEAVE
178
230
} else if ( eventType === EventType . HoverEnter ) {
179
231
return PointerEventType . PET_HOVER_ENTER
232
+ } else if ( eventType === EventType . Drag ) {
233
+ return PointerEventType . PET_DRAG
234
+ } else if ( eventType === EventType . DragLocked ) {
235
+ return PointerEventType . PET_DRAG_LOCKED
236
+ } else if ( eventType === EventType . DragEnd ) {
237
+ return PointerEventType . PET_DRAG_END
180
238
}
181
239
return PointerEventType . PET_DOWN
182
240
}
@@ -210,7 +268,10 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
210
268
eventType === EventType . Down ||
211
269
eventType === EventType . Up ||
212
270
eventType === EventType . HoverEnter ||
213
- eventType === EventType . HoverLeave
271
+ eventType === EventType . HoverLeave ||
272
+ eventType === EventType . Drag ||
273
+ eventType === EventType . DragLocked ||
274
+ eventType === EventType . DragEnd
214
275
) {
215
276
const command = inputSystem . getInputCommand ( opts . button , getPointerEvent ( eventType ) , entity )
216
277
if ( command ) {
@@ -263,6 +324,33 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
263
324
setPointerEvent ( entity , PointerEventType . PET_HOVER_LEAVE , options )
264
325
}
265
326
327
+ const onPointerDrag : PointerEventsSystem [ 'onPointerDrag' ] = ( ...args ) => {
328
+ const [ data , cb ] = args
329
+ const { entity, opts } = data
330
+ const options = getDefaultOpts ( opts )
331
+ removeEvent ( entity , EventType . Drag )
332
+ getEvent ( entity ) . set ( EventType . Drag , { cb, opts : options } )
333
+ setPointerEvent ( entity , PointerEventType . PET_DRAG , options )
334
+ }
335
+
336
+ const onPointerDragLocked : PointerEventsSystem [ 'onPointerDragLocked' ] = ( ...args ) => {
337
+ const [ data , cb ] = args
338
+ const { entity, opts } = data
339
+ const options = getDefaultOpts ( opts )
340
+ removeEvent ( entity , EventType . DragLocked )
341
+ getEvent ( entity ) . set ( EventType . DragLocked , { cb, opts : options } )
342
+ setPointerEvent ( entity , PointerEventType . PET_DRAG_LOCKED , options )
343
+ }
344
+
345
+ const onPointerDragEnd : PointerEventsSystem [ 'onPointerDragEnd' ] = ( ...args ) => {
346
+ const [ data , cb ] = args
347
+ const { entity, opts } = data
348
+ const options = getDefaultOpts ( opts )
349
+ removeEvent ( entity , EventType . DragEnd )
350
+ getEvent ( entity ) . set ( EventType . DragEnd , { cb, opts : options } )
351
+ setPointerEvent ( entity , PointerEventType . PET_DRAG_END , options )
352
+ }
353
+
266
354
return {
267
355
removeOnClick ( entity : Entity ) {
268
356
removeEvent ( entity , EventType . Click )
@@ -284,6 +372,18 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
284
372
removeEvent ( entity , EventType . HoverLeave )
285
373
} ,
286
374
375
+ removeOnPointerDrag ( entity : Entity ) {
376
+ removeEvent ( entity , EventType . Drag )
377
+ } ,
378
+
379
+ removeOnPointerDragLocked ( entity : Entity ) {
380
+ removeEvent ( entity , EventType . DragLocked )
381
+ } ,
382
+
383
+ removeOnPointerDragEnd ( entity : Entity ) {
384
+ removeEvent ( entity , EventType . DragEnd )
385
+ } ,
386
+
287
387
onClick ( value , cb ) {
288
388
const { entity } = value
289
389
const options = getDefaultOpts ( value . opts )
@@ -298,6 +398,9 @@ export function createPointerEventsSystem(engine: IEngine, inputSystem: IInputSy
298
398
onPointerDown,
299
399
onPointerUp,
300
400
onPointerHoverEnter,
301
- onPointerHoverLeave
401
+ onPointerHoverLeave,
402
+ onPointerDrag,
403
+ onPointerDragLocked,
404
+ onPointerDragEnd
302
405
}
303
406
}
0 commit comments