40
40
background-color:'#111';
41
41
font-family: CerebriSans-Regular,-apple-system,system-ui,Roboto,sans-serif;
42
42
overscroll-behavior-y: contain;
43
+ touch-action: none;
43
44
}
44
45
#loading_text {
45
46
position: absolute;
@@ -1238,22 +1239,6 @@ mouse = {x:0, y:0, position:[0,0], left:false, middle:false, pressure:0.0, hover
1238
1239
}
1239
1240
}
1240
1241
1241
- function _mousedown ( event ) {
1242
- _input ( event )
1243
- if ( event . button > 0 ) {
1244
- return
1245
- }
1246
-
1247
- // if (event.pointerType == 'mouse' || event.pointerType == 'touch') {
1248
- // mouse.pressure = 1
1249
- // }
1250
- // else {
1251
- // mouse.pressure = event.originalEvent.pressure
1252
- // }
1253
- _update_mouse_position ( event )
1254
- _handle_mouse_click ( event )
1255
- }
1256
- document . addEventListener ( 'pointerdown' , _mousedown )
1257
1242
1258
1243
// const click_animation = new Entity({'parent':camera.ui, 'scale':.2, 'z':-100, 'texture':'impact_effect.gif', 'enabled':false, 'alpha':.5})
1259
1244
// if (!click_animation.texture) {
@@ -1262,7 +1247,7 @@ document.addEventListener('pointerdown', _mousedown)
1262
1247
1263
1248
time_of_press = 0
1264
1249
function _handle_mouse_click ( e ) {
1265
- mouse . left = true
1250
+ // mouse.left = true
1266
1251
element_hit = document . elementFromPoint ( e . pageX - window . pageXOffset , e . pageY - window . pageYOffset ) ;
1267
1252
entity = entities [ element_hit . entity_index ]
1268
1253
// print(element_hit, entity.on_click)
@@ -1292,65 +1277,66 @@ function _handle_mouse_click(e) {
1292
1277
}
1293
1278
}
1294
1279
1295
- function _mouseup ( event ) {
1296
- mouse . click_end_position = mouse . position
1297
- if ( time - time_of_press < .15 ) {
1298
- diff_x = mouse . position [ 0 ] - mouse . swipe_start_position [ 0 ]
1299
- diff_y = mouse . position [ 1 ] - mouse . swipe_start_position [ 1 ]
1300
-
1301
- if ( diff_x < - .05 && abs ( diff_y ) < .15 ) {
1302
- _input ( 'swipe left' )
1303
- }
1304
- if ( diff_x > .05 && abs ( diff_y ) < .15 ) {
1305
- _input ( 'swipe right' )
1306
- }
1307
- if ( diff_y > .05 && abs ( diff_x ) < .15 ) {
1308
- _input ( 'swipe up' )
1309
- }
1310
- if ( diff_y < - .05 && abs ( diff_x ) < .15 ) {
1311
- _input ( 'swipe down' )
1312
- }
1313
- }
1314
-
1315
- _input ( event )
1316
- mouse . left = false ;
1317
- for ( var e of entities ) {
1318
- if ( e . dragging ) {
1319
- e . dragging = false
1320
- if ( e . drop ) {
1321
- e . drop ( )
1322
- }
1323
- }
1324
- }
1325
- }
1326
- document . addEventListener ( 'pointerup' , _mouseup )
1327
-
1280
+ document . addEventListener ( 'mousedown' , ( event ) => {
1281
+ if ( event . button == 0 ) { key = 'left mouse down' ; mouse . left = true ; held_keys [ 'mouse left' ] = true }
1282
+ else if ( event . button == 1 ) { key = 'middle mouse down' ; mouse . middle = true ; held_keys [ 'mouse middle' ] = true }
1283
+ else if ( event . button == 2 ) { key = 'right mouse down' ; mouse . right = true ; held_keys [ 'mouse right' ] = true }
1284
+ _update_mouse_position ( event . clientX , event . clientY , event . pressure )
1285
+ _handle_mouse_click ( event )
1286
+ _input ( key )
1328
1287
1329
- function _update_mouse_position ( event ) {
1288
+ } )
1289
+ document . addEventListener ( 'touchstart' , ( event ) => {
1290
+ event = event . touches [ 0 ]
1291
+ key = 'left mouse down' ; mouse . left = true ; held_keys [ 'mouse left' ] = true
1292
+ _update_mouse_position ( event . clientX , event . clientY , event . pressure )
1293
+ _handle_mouse_click ( event )
1294
+ _input ( key )
1295
+ } )
1296
+
1297
+
1298
+ document . addEventListener ( 'mouseup' , ( event ) => {
1299
+ if ( event . button == 0 ) { key = 'left mouse up' ; mouse . left = false ; held_keys [ 'mouse left' ] = false }
1300
+ else if ( event . button == 1 ) { key = 'middle mouse up' ; mouse . middle = false ; held_keys [ 'mouse middle' ] = false }
1301
+ else if ( event . button == 2 ) { key = 'right mouse up' ; mouse . right = false ; held_keys [ 'mouse right' ] = false }
1302
+ _input ( key )
1303
+ } )
1304
+ document . addEventListener ( 'touchend' , ( ) => {
1305
+ key = 'left mouse up' ; mouse . left = false ; held_keys [ 'mouse left' ] = false
1306
+ _input ( 'left mouse up' )
1307
+ } )
1308
+ // document.addEventListener('touchcancel', (event) => {
1309
+ // print(event)
1310
+ // // event = event.touches[0]
1311
+ // key = 'left mouse up'; mouse.left=false; held_keys['mouse left']=false
1312
+ // _input('left mouse up')
1313
+ // })
1314
+ /* disable right click */
1315
+ document . addEventListener ( 'contextmenu' , event => event . preventDefault ( ) ) ;
1316
+
1317
+ function _update_mouse_position ( x , y , pressure ) {
1330
1318
window_position = _game_window . getBoundingClientRect ( )
1331
- event_x = event . clientX
1332
- event_y = event . clientY
1333
- mouse . x = ( ( ( event_x - window_position . left ) / _game_window . clientWidth ) - .5 ) * asp_x
1334
- mouse . y = - ( ( ( event_y - window_position . top ) / _game_window . clientHeight ) - .5 ) / asp_y
1319
+ mouse . x = ( ( ( x - window_position . left ) / _game_window . clientWidth ) - .5 ) * asp_x
1320
+ mouse . y = - ( ( ( y - window_position . top ) / _game_window . clientHeight ) - .5 ) / asp_y
1335
1321
mouse . position = [ mouse . x , mouse . y ]
1336
- mouse . pressure = event . pressure * 2
1322
+ mouse . pressure = pressure * 2
1337
1323
}
1338
1324
1339
- function _onmousemove ( event ) {
1325
+ function _onmousemove ( pageX , pageY , clientX , clientY , pressure , target ) {
1340
1326
// print('move')
1341
- _update_mouse_position ( event )
1327
+ _update_mouse_position ( clientX , clientY , pressure )
1342
1328
1343
- if ( ! mouse . hovered_entity ) {
1329
+ if ( ! mouse . hovered_entity || ! target ) {
1344
1330
mouse . point = null
1345
1331
}
1346
1332
else {
1347
- var rect = event . target . getBoundingClientRect ( ) ;
1348
- var x = event . clientX - rect . left ; //x position within the element.
1349
- var y = event . clientY - rect . top ; //y position within the element.
1333
+ var rect = target . getBoundingClientRect ( ) ;
1334
+ var x = clientX - rect . left ; //x position within the element.
1335
+ var y = clientY - rect . top ; //y position within the element.
1350
1336
mouse . point = [ ( x / rect . width ) - .5 , .5 - ( y / rect . height ) ]
1351
1337
// print(mouse.point)
1352
1338
}
1353
- element_hit = document . elementFromPoint ( event . pageX - window . pageXOffset , event . pageY - window . pageYOffset ) ;
1339
+ element_hit = document . elementFromPoint ( pageX - window . scrollX , pageY - window . scrollY ) ;
1354
1340
_entity = entities [ element_hit . entity_index ]
1355
1341
if ( _entity ) {
1356
1342
mouse . hovered_entity = _entity
@@ -1384,7 +1370,15 @@ function _onmousemove(event) {
1384
1370
}
1385
1371
}
1386
1372
}
1387
- document . addEventListener ( 'pointermove' , _onmousemove )
1373
+ document . addEventListener ( 'mousemove' , ( event ) => {
1374
+ _onmousemove ( event . pageX , event . pageY , event . clientX , event . clientY , event . pressure , event . target )
1375
+
1376
+ } )
1377
+ document . addEventListener ( 'touchmove' , ( event ) => {
1378
+ event = event . touches [ 0 ]
1379
+ _onmousemove ( event . pageX , event . pageY , event . clientX , event . clientY , event . pressure , event . target )
1380
+ } )
1381
+
1388
1382
1389
1383
mouse . update = ( ) => { // simulate pointermove. can for example be used to get an updated mouse.hovered_entity or mouse.point without having to wait a frame.
1390
1384
var myEvent = new PointerEvent ( 'pointermove' )
@@ -1581,13 +1575,12 @@ function save_system_clear() {localStorage.clear()}
1581
1575
1582
1576
time = 0
1583
1577
delta_time = 1 / 60
1584
- let start , _prev_time ;
1578
+ let start , _prev_time
1585
1579
update = null
1586
1580
function _step ( _timestamp ) {
1587
1581
if ( start === undefined ) {
1588
1582
start = _timestamp ;
1589
1583
}
1590
- const elapsed = _timestamp - start ;
1591
1584
if ( update ) {
1592
1585
update ( )
1593
1586
}
@@ -1622,17 +1615,6 @@ function _input(event) {
1622
1615
if ( event . deltaY > 0 ) { key = 'scroll down' }
1623
1616
else { key = 'scroll up' }
1624
1617
}
1625
- else if ( event . type == 'pointerdown' ) {
1626
- if ( event . button == 0 ) { key = 'left mouse down' ; mouse . left = true ; held_keys [ 'mouse left' ] = true }
1627
- else if ( event . button == 1 ) { key = 'middle mouse down' ; mouse . middle = true ; held_keys [ 'mouse middle' ] = true }
1628
- else if ( event . button == 2 ) { key = 'right mouse down' ; mouse . right = true ; held_keys [ 'mouse right' ] = true }
1629
- }
1630
- else if ( event . type == 'pointerup' ) {
1631
- if ( event . button == 0 ) { key = 'left mouse up' ; mouse . left = false ; held_keys [ 'mouse left' ] = false }
1632
- else if ( event . button == 1 ) { key = 'middle mouse up' ; mouse . middle = false ; held_keys [ 'mouse middle' ] = false }
1633
- else if ( event . button == 2 ) { key = 'right mouse up' ; mouse . right = false ; held_keys [ 'mouse right' ] = false }
1634
- }
1635
-
1636
1618
else {
1637
1619
key = event . key . toLowerCase ( )
1638
1620
}
@@ -1655,7 +1637,18 @@ function _input(event) {
1655
1637
else if ( event . type == "keydown" ) { // prevent key repeat
1656
1638
return
1657
1639
}
1658
-
1640
+
1641
+ if ( key == 'left mouse up' ) {
1642
+ // drop draggables
1643
+ for ( var e of entities ) {
1644
+ if ( e . dragging ) {
1645
+ e . dragging = false
1646
+ if ( e . drop ) {
1647
+ e . drop ( )
1648
+ }
1649
+ }
1650
+ }
1651
+ }
1659
1652
1660
1653
for ( var e of entities ) {
1661
1654
if ( e . input && e . enabled ) {
@@ -1665,6 +1658,28 @@ function _input(event) {
1665
1658
if ( input ) {
1666
1659
input ( key )
1667
1660
}
1661
+
1662
+ // swipe input
1663
+ if ( key == 'left mouse up' ) {
1664
+ mouse . click_end_position = mouse . position
1665
+ if ( time - time_of_press < .15 ) {
1666
+ diff_x = mouse . position [ 0 ] - mouse . swipe_start_position [ 0 ]
1667
+ diff_y = mouse . position [ 1 ] - mouse . swipe_start_position [ 1 ]
1668
+
1669
+ if ( diff_x < - .05 && abs ( diff_y ) < .15 ) {
1670
+ _input ( 'swipe left' )
1671
+ }
1672
+ if ( diff_x > .05 && abs ( diff_y ) < .15 ) {
1673
+ _input ( 'swipe right' )
1674
+ }
1675
+ if ( diff_y > .05 && abs ( diff_x ) < .15 ) {
1676
+ _input ( 'swipe up' )
1677
+ }
1678
+ if ( diff_y < - .05 && abs ( diff_x ) < .15 ) {
1679
+ _input ( 'swipe down' )
1680
+ }
1681
+ }
1682
+ }
1668
1683
}
1669
1684
document . addEventListener ( 'keydown' , _input )
1670
1685
document . addEventListener ( 'keyup' , _input )
0 commit comments