UNPKG

networked-aframe

Version:

A web framework for building multi-user virtual reality experiences.

121 lines (109 loc) 4.4 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Events Example — Networked-Aframe</title> <meta name="description" content="Events Example — Networked-Aframe" /> <script src="https://aframe.io/releases/1.6.0/aframe.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.8.1/socket.io.min.js"></script> <script src="/easyrtc/easyrtc.js"></script> <script src="/dist/networked-aframe.js"></script> <script> // see issue https://github.com/networked-aframe/networked-aframe/issues/267 NAF.schemas.getComponentsOriginal = NAF.schemas.getComponents; NAF.schemas.getComponents = (template) => { if (!NAF.schemas.hasTemplate('#avatar-template')) { NAF.schemas.add({ template: '#avatar-template', components: [ { component: 'position', requiresNetworkUpdate: NAF.utils.vectorRequiresUpdate(0.001) }, { component: 'rotation', requiresNetworkUpdate: NAF.utils.vectorRequiresUpdate(0.5) }, { selector: '.head', component: 'material', property: 'color' } ] }); } const components = NAF.schemas.getComponentsOriginal(template); return components; }; </script> <script src="https://cdn.jsdelivr.net/npm/aframe-randomizer-components@3.0.2/dist/aframe-randomizer-components.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/aframe-environment-component@1.3.7/dist/aframe-environment-component.min.js"></script> <script src="/js/spawn-in-circle.component.js"></script> </head> <body> <a-scene networked-scene=" room: dev; debug: true; adapter: wseasyrtc; " renderer="physicallyCorrectLights: true;" > <a-assets> <!-- 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> <!-- /Templates --> </a-assets> <a-entity id="rig"> <a-entity id="player" networked="template:#avatar-template;attachTemplateToLocal:false;" camera position="0 1.6 0" spawn-in-circle="radius:3" wasd-controls look-controls > <a-sphere class="head" visible="false" random-color></a-sphere> </a-entity> </a-entity> <a-entity environment="preset:arches"></a-entity> <a-entity light="type:ambient;intensity:1.0"></a-entity> </a-scene> <script> // Called by Networked-Aframe when connected to server function onConnect() { console.error('On connected to NAF -', new Date()); // Examples of listening to NAF events document.body.addEventListener('connected', function (evt) { console.error('connected event. clientId =', evt.detail.clientId); }); document.body.addEventListener('clientConnected', function (evt) { console.error('clientConnected event. clientId =', evt.detail.clientId); }); document.body.addEventListener('clientDisconnected', function (evt) { console.error('clientDisconnected event. clientId =', evt.detail.clientId); }); document.body.addEventListener('entityCreated', function (evt) { console.error('entityCreated event', evt.detail.el); }); document.body.addEventListener('entityRemoved', function (evt) { console.error('entityRemoved event. Entity networkId =', evt.detail.networkId); }); } </script> </body> </html>