Skip to content
This repository was archived by the owner on May 18, 2025. It is now read-only.

Commit b61f637

Browse files
wip
1 parent 3f63c3e commit b61f637

File tree

7 files changed

+56
-42
lines changed

7 files changed

+56
-42
lines changed

example/aframe/sandbox/index.html

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
<meta charset="utf-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
77

8-
<script src="https://aframe.io/releases/1.5.0/aframe.min.js"></script>
9-
<script src="https://cdn.jsdelivr.net/npm/aframe-blink-controls/dist/aframe-blink-controls.min.js"></script>
8+
<!-- <script src="https://aframe.io/releases/1.5.0/aframe.min.js"></script> -->
9+
<!-- <script src="https://cdn.jsdelivr.net/npm/aframe-blink-controls/dist/aframe-blink-controls.min.js"></script> -->
10+
<script src="./../../../dist/aframe.min.js"></script>
11+
<script src="./../../../dist/aframe-blink-controls.min.js"></script>
1012

1113
</head>
1214
<body>
1315
<script src="./../../../dist/xrfragment.aframe.js"></script>
1416
<script src="./../../../dist/xrfragment.extras.js"></script>
1517

16-
<a-scene xr-mode-ui="XRMode: xr" renderer="colorManagement: true; highRefreshRate:true" light="defaultLightsEnabled: false">
18+
<a-scene stats xr-mode-ui="XRMode: xr" renderer="colorManagement: true; highRefreshRate:true" light="defaultLightsEnabled: false">
1719
<a-entity id="player" wasd-controls look-controls>
1820
<a-entity camera="fov:90" position="0 1.6 0" id="camera"></a-entity>
1921
<a-entity id="left-hand" laser-controls="hand: left" raycaster="objects:.ray" blink-controls="cameraRig:#player; teleportOrigin: #camera; collisionEntities: .floor">
@@ -29,8 +31,8 @@
2931
</a-scene>
3032

3133
<script>
32-
// the xrfmenu is totally optional but can be handy
33-
// to quickly add your logo & buttons etc
34+
// xrfragment.extras.js is totally optional but can be handy
35+
// to quickly add a menu, logo, buttons, serverless meeting-functionality etc
3436
XRFMENU.logo = './../../assets/logo.png'
3537
XRFMENU.morelabel = '⚡'
3638
// add your menubuttons:
@@ -59,6 +61,8 @@ <h1>💁 Hi there!</h1>
5961
</a>
6062
<br><br>
6163
`,{timeout:false})
64+
65+
XRFMENU.install(xrf)
6266
</script>
6367

6468
</body>

make

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ build(){
8989
cat src/3rd/js/extra/*.js > dist/xrfragment.extras.js
9090

9191
# fat all-in-one standalone xrf release
92-
test -f /tmp/xrf-aframe.js || {
93-
wget "https://aframe.io/releases/1.5.0/aframe.min.js" -O /tmp/xrf-aframe.js
94-
wget "https://cdn.jsdelivr.net/npm/aframe-blink-controls/dist/aframe-blink-controls.min.js" -O /tmp/xrf-blink.js
92+
test -f dist/aframe.min.js || {
93+
wget "https://aframe.io/releases/1.5.0/aframe.min.js" -O dist/aframe.min.js
94+
wget "https://cdn.jsdelivr.net/npm/aframe-blink-controls/dist/aframe-blink-controls.min.js" -O dist/aframe-blink-controls.min.js
9595
}
9696

97-
cat /tmp/xrf-*.js dist/xrfragment.aframe.js dist/xrfragment.extras.js > dist/xrfragment.aframe.all.js
97+
cat dist/aframe.min.js dist/aframe-blink-controls.min.js dist/xrfragment.aframe.js dist/xrfragment.extras.js > dist/xrfragment.aframe.all.js
9898

9999
# add license headers
100100
for file in dist/xrfragment.{aframe,module,three,three.module,aframe.all}.js; do

src/3rd/js/extra/$meeting.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,31 @@ MEETING = {
1414

1515
init: (el) => new Proxy({
1616

17-
scene: null,
18-
enabled: false,
19-
active: false,
17+
scene: null,
18+
visible: false,
2019
//$overlay: $overlay = el.querySelector('#overlay'),
2120
//
2221
install(opts){
2322
this.scene = opts.scene
24-
window.meeting.buttons.push(`<a class="btn" aria-label="button" aria-description="start text/audio/video chat" id="meeting" onclick="MEETING.toggle()" target="_blank">🧑‍🤝‍🧑 meeting</a><br>`)
25-
document.body.appendChild( el )
2623

24+
document.body.appendChild( el )
25+
document.dispatchEvent( new CustomEvent("MEETING:ready", {detail: opts}) )
2726
},
2827

2928
start(){
3029
this.scene.addEventListener('meeting.peer.add', () => console.log("$meeting.peer.add") )
3130
this.scene.addEventListener('meeting.peer.remove', () => console.log("$meeting.peer.remove") )
3231
},
3332

34-
toggle: () => MEETING.collapsed = !MEETING.collapsed,
35-
install: (opts) => {
36-
document.body.appendChild(el)
37-
document.dispatchEvent( new CustomEvent("MEETING:ready", {detail: opts}) )
38-
}
33+
toggle: () => MEETING.visible = !MEETING.visible,
3934

4035
},{
4136

4237
get(data,k,v){ return data[k] },
4338
set(data,k,v){
4439
data[k] = v
4540
switch( k ){
46-
case "css": document.head.innerHTML += v; break;
41+
case "visible": el.style.display = data.visible ? 'block' : 'none'
4742
}
4843
},
4944

@@ -53,6 +48,9 @@ MEETING = {
5348
// reactify component!
5449
document.addEventListener('XRFMENU:ready', (opts) => {
5550
opts = opts.detail
51+
XRFMENU.buttons = ([`<a class="btn" aria-label="button" aria-description="start text/audio/video chat" id="meeting" onclick="MEETING.toggle()" target="_blank">🧑‍🤝‍🧑 meeting</a><br>`])
52+
.concat(XRFMENU.buttons)
53+
document.head.innerHTML += MEETING.css
5654
$meeting = document.createElement('div')
5755
$meeting.innerHTML = MEETING.html
5856
MEETING = MEETING.init($meeting)

src/3rd/js/extra/$menu.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ $xrfmenu = document.createElement('div')
6363
$xrfmenu.innerHTML = XRFMENU.html
6464
XRFMENU = XRFMENU.init($xrfmenu)
6565

66-
67-
// here come all menu functions which are less related to rendering
66+
// attach menu functions which are less related to rendering
6867
let utils = {
6968

7069
bindToWindow(opts){

src/3rd/js/extra/meeting.js

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,38 @@
11
// this orchestrates multiplayer events from the scene graph
22

3-
window.meeting = (THREE, scene) => ({
4-
peer:{
5-
peers: [],
6-
add(peer){
7-
let defaults = {lastUpdated: new Date().getTime() }
8-
peer = { ...defaults,...peer}
9-
this.peers.push(peer)
10-
scene.dispatchEvent({type:'meeting.peer.add', peer})
11-
},
12-
remove(peer){
13-
scene.dispatchEvent({type:'meeting.peer.remove', peer})
14-
},
15-
send(opts){
16-
17-
},
18-
receive(opts){
3+
window.meeting = (THREE, scene) => new Proxy({
4+
5+
status: 'offline',
6+
peers: {},
197

8+
9+
add(peerid,data){
10+
data = {lastUpdated: new Date().getTime(), id: peerid, ...data }
11+
this.peers[peerid] = data
12+
scene.dispatchEvent({type:'meeting.peer.add', peer})
13+
},
14+
15+
remove(peerid,data){
16+
delete this.peers[peerid]
17+
scene.dispatchEvent({type:'meeting.peer.remove', peer})
18+
},
19+
20+
send(opts){
21+
22+
},
23+
24+
receive(opts){
25+
26+
}
27+
},
28+
{
29+
// auto-trigger events on changes
30+
get(meeting,k,receiver){ return meeting[k] },
31+
set(meeting,k,v){
32+
let from = meeting[k]
33+
meeting[k] = v
34+
switch( k ){
35+
default: scene.dispatchEvent({type:`meeting.${k}.change`, from, to:v})
2036
}
2137
}
2238
})

src/3rd/js/three/index.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ xrf.init = ((init) => function(opts){
1515
// return xrfragment lib as 'xrf' query functor (like jquery)
1616
for ( let i in xrf ) xrf.query[i] = xrf[i]
1717

18-
// install menu+extras if available
19-
if( typeof XRFMENU != 'undefined' ) XRFMENU.install(xrf)
20-
2118
return xrf.query
2219
})(xrf.init)
2320

src/3rd/js/three/xrf/dynamic/uvscroll.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ xrf.addEventListener('dynamicKeyValue', (opts) => {
22
let {scene,match,v} = opts
33
let objname = v.fragment
44
let autoscroll = v.z > 0 || v.w > 0
5-
5+
return // DISABLED
66
scene.traverse( (mesh) => {
77
if( mesh.name == objname ){
88
if( !mesh.geometry ) return console.warn(`mesh '${objname}' has no uvcoordinates to offset`)

0 commit comments

Comments
 (0)