|
2440 | 2440 | mesh.y = newY; |
2441 | 2441 | }; |
2442 | 2442 | mesh.scene = null; |
2443 | | - mesh.setSceneBinding = newSceneMesh => { |
| 2443 | + const _makeSetSceneBinding = (_save = () => Promise.resolve()) => newSceneMesh => { |
2444 | 2444 | if (newSceneMesh) { |
2445 | | - newSceneMesh.apps.push(mesh); |
2446 | | - newSceneMesh.token.apps.push({ |
| 2445 | + const tokenApps = newSceneMesh.token.apps.concat([{ |
2447 | 2446 | appType: mesh.type, |
2448 | 2447 | url: mesh.url, |
2449 | 2448 | position: mesh.moveMesh.position.toArray(), |
2450 | 2449 | orientation: mesh.moveMesh.quaternion.toArray(), |
2451 | | - }); |
2452 | | - _saveData(); |
2453 | | - |
2454 | | - mesh.moveMesh.material.color.setHex(0x9ccc65); |
| 2450 | + }]); |
| 2451 | + const apps = newSceneMesh.apps.concat([mesh]); |
| 2452 | + _save(newSceneMesh.token.id, tokenApps) |
| 2453 | + .then(() => { |
| 2454 | + newSceneMesh.apps = apps; |
| 2455 | + newSceneMesh.token.apps = tokenApps; |
| 2456 | + |
| 2457 | + mesh.moveMesh.material.color.setHex(0x9ccc65); |
| 2458 | + }); |
2455 | 2459 | } else { |
2456 | 2460 | if (mesh.scene) { |
2457 | 2461 | const index = mesh.scene.apps.indexOf(mesh); |
2458 | | - mesh.scene.apps.splice(index, 1); |
2459 | | - mesh.scene.token.apps.splice(index, 1); |
2460 | | - _saveData(); |
| 2462 | + const tokenApps = mesh.scene.token.apps.slice(); |
| 2463 | + tokenApps.splice(index, 1); |
| 2464 | + const apps = mesh.scene.apps.slice(); |
| 2465 | + apps.splice(index, 1); |
| 2466 | + _save(newSceneMesh.token.id, tokenApps) |
| 2467 | + .then(() => { |
| 2468 | + mesh.scene.token.apps = tokenApps; |
| 2469 | + mesh.scene.apps = apps; |
| 2470 | + |
| 2471 | + mesh.moveMesh.material.color.setHex(0x333333); |
| 2472 | + }); |
2461 | 2473 | } |
2462 | | - mesh.moveMesh.material.color.setHex(0x333333); |
2463 | 2474 | } |
2464 | 2475 | mesh.scene = newSceneMesh; |
2465 | 2476 | }; |
| 2477 | + mesh.setSceneBinding = _makeSetSceneBinding(_setSceneApps); |
| 2478 | + mesh.setSceneBindingRaw = _makeSetSceneBinding(); |
2466 | 2479 | mesh.update = page => { |
2467 | 2480 | const _select = () => { |
2468 | 2481 | mesh.material.uniforms.uColor.value = new THREE.Color(0x9ccc65); |
|
0 commit comments