The two issues I worked on this past week were getting game-pad controllers working with our project (~6 hours), and general work on the game-state systems to iron out some of the kinks and add some more functionality (~3-4 hours). Unfortunately neither of these tasks proved 100% successful due to some set backs.
The game-pad controllers are so close to working, movement and look controls are fully functional, but I cannot get the Super Hands components to pick up the button events from aframe-extras. The easiest way to see this is by looking at some code:
The above code is the player element in the scene which is composed of a rig, camera, and cursor. The 'movement-controls' element is the component that implements the game-pad controls and every time a button is hit on the controller it emits a 'gamepadbuttondown' event on the 'rig' entity that has the value of the pressed button in the event.details.index. The problem is that the cursor element and the 'grabbable' component on grabbable elements need to listen for this event, so I created a custom component, 'cursor-extend', to see if I could extend the event down to the cursor element, but the cursor still does not hear the event. Looking at the source code for the Aframe Cursor, I can see that the cursor component watches for inputs at the Canvas level of the document, so it looks like I would need to route the event through the canvas for the cursor to pick it up.
Seeing as there is still a lot more important work to complete for our final deadline, I am going to leave the controller button support for if I have extra time later.
The game-pad controllers are so close to working, movement and look controls are fully functional, but I cannot get the Super Hands components to pick up the button events from aframe-extras. The easiest way to see this is by looking at some code:
<!-- Camera --> <a-entity id="rig" movement-controls position="0 0 0"> <a-entity id="camera" camera wasd-controls="acceleration: 125" look-controls="pointerLockEnabled:true" position="0 1.6 0" capture-mouse static-body="shape: sphere; sphereRadius: 0.0002" super-hands="colliderEvent: raycaster-intersection; colliderEventProperty: els; colliderEndEvent:raycaster-intersection-cleared; colliderEndEventProperty: clearedEls;"> <a-cursor id="cursor" cursor-extend downEvents="gamepadbuttondown" upEvents="gamepadbuttonup" rayOrigin="entity" far="5" interval="100" objects=".grabbable, .clickable"> </a-cursor> </a-entity>
The above code is the player element in the scene which is composed of a rig, camera, and cursor. The 'movement-controls' element is the component that implements the game-pad controls and every time a button is hit on the controller it emits a 'gamepadbuttondown' event on the 'rig' entity that has the value of the pressed button in the event.details.index. The problem is that the cursor element and the 'grabbable' component on grabbable elements need to listen for this event, so I created a custom component, 'cursor-extend', to see if I could extend the event down to the cursor element, but the cursor still does not hear the event. Looking at the source code for the Aframe Cursor, I can see that the cursor component watches for inputs at the Canvas level of the document, so it looks like I would need to route the event through the canvas for the cursor to pick it up.
Seeing as there is still a lot more important work to complete for our final deadline, I am going to leave the controller button support for if I have extra time later.
Comments
Post a Comment