27 lines
862 B
JavaScript
27 lines
862 B
JavaScript
window.AFRAME.registerComponent('xrf-wear', {
|
|
schema:{
|
|
el: {type:"selector"},
|
|
position: {type:"vec3"},
|
|
rotation: {type:"vec3"}
|
|
},
|
|
init: function(){
|
|
$('a-scene').addEventListener('enter-vr', (e) => this.wear(e) )
|
|
$('a-scene').addEventListener('exit-vr', (e) => this.unwear(e) )
|
|
},
|
|
wear: function(){
|
|
if( !this.wearable ){
|
|
let d = this.data
|
|
this.wearable = new THREE.Group()
|
|
this.el.object3D.children.map( (c) => this.wearable.add(c) )
|
|
this.wearable.position.set( d.position.x, d.position.y, d.position.z)
|
|
this.wearable.rotation.set( d.rotation.x, d.rotation.y, d.rotation.z)
|
|
}
|
|
this.data.el.object3D.add(this.wearable)
|
|
},
|
|
unwear: function(){
|
|
this.data.el.remove(this.wearable)
|
|
this.wearable.children.map( (c) => this.el.object3D.add(c) )
|
|
delete this.wearable
|
|
}
|
|
})
|