d2k
Version:
rendering engine from the Dark side of the Force - wip
137 lines (120 loc) • 3.49 kB
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>