threex
Version:
Game Extensions for three.js http://www.threejsgames.com/extensions/
46 lines (36 loc) • 1.36 kB
JavaScript
var THREEx = THREEx || {}
/**
* [ description]
* @param {String} label the label of the sceneMirror
* @param {THREE.Scene} srcScene the scene to mirror
* @return {THREE.SceneCloner} [description]
*/
THREEx.SceneCloner = function(label, srcScene, onAdded, onRemoved, dstScene){
label = 'sceneCloner-'+label
// onAdded = onAdded || function(dstObject, srcObject, event){}
console.log('dstScene', dstScene)
dstScene = dstScene || new THREE.Scene()
this.dstScene = dstScene
srcScene.userData[label] = dstScene
var addedCallback = function(event){
console.log('inside _addedDefaultCallback', event)
var srcObject = event.target
var geometry = srcObject.geometry.clone()
var material = srcObject.material.clone()
var dstObject = new THREE.Mesh(geometry, material)
srcObject.clone(dstObject)
dstObject.position = srcObject.position
dstObject.quaternion = srcObject.quaternion
dstObject.scale = srcObject.scale
console.assert(srcObject.parent)
console.assert(srcObject.parent.userData[label])
var dstParent = srcObject.parent.userData[label]
dstParent.add(dstObject)
console.assert(srcObject.userData[label] === undefined)
srcObject.userData[label] = dstObject
onAdded(dstObject, srcObject, event)
}
this.add = function(srcObject3d){
srcObject3d.addEventListener('added', addedCallback)
}
}