UNPKG

d2k

Version:

rendering engine from the Dark side of the Force - wip

137 lines (120 loc) 3.49 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>d2k.js - layerization - virtual joystick (babylon.js x three.js)</title> <style> * { box-sizing: border-box; } html, body { width: 100%; height: 100%; } body { margin: 0; overflow: hidden; } canvas { left: 0; right: 0; top: 0; bottom: 0; z-index: 1; position: absolute; } .content { margin: 20px 0 0 20px; z-index: 5; width: 100%; position: fixed; color: white; font-size: 12px; font-family: sans-serif; } </style> </head> <body> <p class="content">drag to enable the virtual joystick</p> <canvas id="viewRendering" touch-action="none"></canvas> <script src="https://cdn.babylonjs.com/babylon.js"></script> <script src="https://threejs.org/build/three.js"></script> <script src="../../src/3d-object-builder/index.js"></script> <script> window.addEventListener( 'DOMContentLoaded', function () { var THREEstarter = d2k .onstarter( { canvas: 'viewRendering' } ) .use( THREE ) .withCamera( { name: 'myCameraName', config: { args: [ 75, window.innerWidth / window.innerHeight, 0.1, 1000 ], position: [ 0, 0, 100 ], type: 'perspective' } } ) .withMesh( { name: 'myMeshName', config: { geometry: { args: [ 20, 20, 20 ], type: 'box-buffer' }, material: { type: 'mesh-normal' } } } ) .withRenderer( { name: 'myRendererName', config: { size: [ window.innerWidth, window.innerHeight ] } } ) .withScene( { name: 'mySceneName' } ) .composify( { config: { start: true, scene: { main: 'mySceneName', }, mesh: [ { name: 'myMeshName', sceneParent: 'main' } ], camera: { main: 'myCameraName', }, renderer: 'myRendererName' } } ) .value(); var BABYLONstarter = d2k .onstarter() .use( BABYLON ) .withController( { name: 'myControllerName', config: { args: [ true, false ], type: 'virtual', movespeed: 5 } } ) .value(); var movespeed = 5; THREEstarter.mesh.myMeshName.onrender( function ( time ) { if ( BABYLONstarter.controller.myControllerName.left.pressed ) { var moveX = BABYLONstarter.controller.myControllerName.left.deltaPosition.x * time * movespeed; var moveY = BABYLONstarter.controller.myControllerName.left.deltaPosition.y * time * movespeed; THREEstarter.mesh.myMeshName.rotation.x += moveX; THREEstarter.mesh.myMeshName.rotation.y += moveY; } } ); }, false ); </script> </body> </html>