-
Notifications
You must be signed in to change notification settings - Fork 294
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
747dfa4
commit bfcd7d9
Showing
2 changed files
with
213 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
<html> | ||
<head> | ||
<meta charset="utf-8"> | ||
<title>Dev Example — Networked-Aframe</title> | ||
<meta name="description" content="Dev Example — Networked-Aframe"> | ||
|
||
<script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script> | ||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.slim.js"></script> | ||
<script src="/easyrtc/easyrtc.js"></script> | ||
<script src="/dist/networked-aframe.js"></script> | ||
<script src="https://mixedreality.mozilla.org/ammo.js/builds/ammo.wasm.js"></script> | ||
<script src="https://cdn.jsdelivr.net/gh/n5ro/aframe-physics-system@v4.0.1/dist/aframe-physics-system.js"></script> | ||
<!-- | ||
This example is a modified version of ownership-transfer.html | ||
You can compare the two files to easily see what changes you need to do to add physics. | ||
See ammo driver documentation at https://github.com/n5ro/aframe-physics-system/blob/master/AmmoDriver.md | ||
To use with super-hands, you currently need the fork https://github.com/diarmidmackenzie/aframe-super-hands-component | ||
and use on your hand (see tracked-controllers.html example) | ||
ammo-body="type: kinematic; emitCollisionEvents: true; disableCollision: true" | ||
ammo-shape="fit: manual; type:sphere; sphereRadius: 0.02" | ||
super-hands="colliderEvent: collidestart; | ||
colliderEventProperty: targetEl; | ||
colliderEndEvent: collideend; | ||
colliderEndEventProperty: targetEl" | ||
--> | ||
|
||
<style> | ||
.controls { | ||
position: absolute; | ||
width: 100%; | ||
display: flex; | ||
flex: 1; | ||
justify-content: center; | ||
flex-direction: row; | ||
top: 0; | ||
} | ||
|
||
.controls p { | ||
font-family: monospace; | ||
color: white; | ||
} | ||
</style> | ||
|
||
<script src="https://unpkg.com/aframe-randomizer-components@^3.0.1/dist/aframe-randomizer-components.min.js"></script> | ||
<!--<script src="https://unpkg.com/aframe-particle-system-component@1.0.5/dist/aframe-particle-system-component.min.js"></script>--> | ||
<script src="https://cdn.jsdelivr.net/gh/oneWaveAdrian/aframe-particle-system-component@aframe-1.2.0-upgrade/dist/aframe-particle-system-component.min.js"></script> | ||
<script src="/js/spawn-in-circle.component.js"></script> | ||
<script src="/js/spawner.component.js"></script> | ||
<script src="/js/toggle-ownership.component.js"></script> | ||
</head> | ||
<body> | ||
<a-scene | ||
physics="driver: ammo; debug: false" | ||
networked-scene=" | ||
room: dev; | ||
debug: true; | ||
adapter: wseasyrtc; | ||
"> | ||
<a-assets> | ||
|
||
<img id="grid" src="https://img.gs/bbdkhfbzkk/stretch/https://i.imgur.com/25P1geh.png" crossorigin="anonymous"> | ||
<img id="sky" src="https://i.imgur.com/WqlqEkq.jpg" crossorigin="anonymous" /> | ||
|
||
<!-- Templates --> | ||
|
||
<!-- Avatar --> | ||
<template id="avatar-template"> | ||
<a-entity class="avatar"> | ||
<a-sphere class="head" | ||
scale="0.45 0.5 0.4" | ||
></a-sphere> | ||
<a-entity class="face" | ||
position="0 0.05 0" | ||
> | ||
<a-sphere class="eye" | ||
color="#efefef" | ||
position="0.16 0.1 -0.35" | ||
scale="0.12 0.12 0.12" | ||
> | ||
<a-sphere class="pupil" | ||
color="#000" | ||
position="0 0 -1" | ||
scale="0.2 0.2 0.2" | ||
></a-sphere> | ||
</a-sphere> | ||
<a-sphere class="eye" | ||
color="#efefef" | ||
position="-0.16 0.1 -0.35" | ||
scale="0.12 0.12 0.12" | ||
> | ||
<a-sphere class="pupil" | ||
color="#000" | ||
position="0 0 -1" | ||
scale="0.2 0.2 0.2" | ||
></a-sphere> | ||
</a-sphere> | ||
</a-entity> | ||
</a-entity> | ||
</template> | ||
|
||
<template id="cube-template"> | ||
<a-entity> | ||
<a-box class="cube" toggle-ownership color="#F00" | ||
ammo-body="type: dynamic" ammo-shape="type: box" | ||
></a-box> | ||
</a-entity> | ||
</template> | ||
|
||
<!-- /Templates --> | ||
</a-assets> | ||
|
||
<a-entity id="player" | ||
networked="template:#avatar-template;attachTemplateToLocal:false;" | ||
camera | ||
position="0 1.6 0" | ||
spawn-in-circle="radius:3" | ||
spawner="template:#cube-template" | ||
wasd-controls look-controls | ||
> | ||
<a-box class="arm" rotation="-10 10 0" position="0.3 -0.3 0" width="0.1" height="0.1" depth="1.5" color="#F00" | ||
ammo-body="type: kinematic" | ||
ammo-shape="type: box" | ||
></a-box> | ||
<a-sphere class="head" | ||
visible="false" | ||
random-color | ||
></a-sphere> | ||
</a-entity> | ||
|
||
<a-box ammo-body="type: static" ammo-shape="type: box" material="color:#774411" height="0.1" width="10" depth="10" position="0 0.1 0"></a-box> | ||
<a-box ammo-body="type: static" ammo-shape="type: box" material="color:#774411" height="3" width="10" depth="0.1" position="0 1.5 5"></a-box> | ||
<a-entity position="0 0 0" | ||
geometry="primitive: plane; width: 10000; height: 10000;" rotation="-90 0 0" | ||
material="src: #grid; repeat: 10000 10000; transparent: true; metalness:0.6; roughness: 0.4; sphericalEnvMap: #sky;"></a-entity> | ||
|
||
<a-entity light="color: #ccccff; intensity: 1; type: ambient;" visible=""></a-entity> | ||
<a-entity light="color: #ffaaff; intensity: 1.5" position="5 5 5"></a-entity> | ||
|
||
<a-sky src="#sky" rotation="0 -90 0"></a-sky> | ||
<a-entity id="particles" particle-system="preset: snow"></a-entity> | ||
</a-scene> | ||
|
||
<div class="controls"> | ||
<p>Press space to spawn a cube. Press enter to take ownership of all cubes.</p> | ||
</div> | ||
|
||
<!-- GitHub Corner. --> | ||
<a href="https://github.com/networked-aframe/networked-aframe" class="github-corner"> | ||
<svg width="80" height="80" viewBox="0 0 250 250" style="fill:#222; color:#fff; position: absolute; top: 0; border: 0; right: 0;"> | ||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path> | ||
</svg> | ||
</a> | ||
<style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}} | ||
</style> | ||
|
||
<script> | ||
// On mobile remove elements that are resource heavy | ||
var isMobile = AFRAME.utils.device.isMobile(); | ||
|
||
if (isMobile) { | ||
var particles = document.getElementById('particles'); | ||
particles.parentNode.removeChild(particles); | ||
} | ||
</script> | ||
|
||
<script> | ||
// Define custom schema for syncing avatar color, set by random-color | ||
NAF.schemas.add({ | ||
template: '#avatar-template', | ||
components: [ | ||
'position', | ||
'rotation', | ||
{ | ||
selector: '.head', | ||
component: 'material', | ||
property: 'color' | ||
} | ||
] | ||
}); | ||
|
||
NAF.schemas.add({ | ||
template: '#cube-template', | ||
components: [ | ||
"position", | ||
{ | ||
selector: '.cube', | ||
component: 'rotation' | ||
}, | ||
{ | ||
selector: '.cube', | ||
component: 'material', | ||
property: 'color' | ||
}, | ||
{ | ||
selector: '.cube', | ||
component: 'toggle-ownership', | ||
property: 'direction' | ||
} | ||
] | ||
}); | ||
|
||
// Called by Networked-Aframe when connected to server | ||
function onConnect () { | ||
console.log("onConnect", new Date()); | ||
} | ||
</script> | ||
</body> | ||
</html> |