|
2060 | 2060 | }, i => { |
2061 | 2061 | _moveApp(iconMesh, i); |
2062 | 2062 | }, () => { |
| 2063 | + if (iconMesh.scene) { |
| 2064 | + const index = iconMesh.scene.apps.indexOf(iconMesh); |
| 2065 | + if (index !== -1) { |
| 2066 | + iconMesh.scene.token.apps.splice(index, 1); |
| 2067 | + // XXX save |
| 2068 | + } |
| 2069 | + } |
| 2070 | + |
2063 | 2071 | _removeApp(iconMesh); |
2064 | | - _destroyApp(iconMesh) |
| 2072 | + _destroyApp(iconMesh); |
2065 | 2073 | }, true); |
2066 | | - _addApp(iconMesh); |
| 2074 | + // _addApp(iconMesh); |
2067 | 2075 | iconMesh.moveMesh.position.fromArray(position); |
2068 | 2076 | iconMesh.moveMesh.quaternion.fromArray(orientation); |
2069 | 2077 | iconMesh.iframe.position = position; |
|
2453 | 2461 | mesh.y = newY; |
2454 | 2462 | }; |
2455 | 2463 | mesh.scene = null; |
2456 | | - const _makeSetSceneBinding = (_save = () => Promise.resolve()) => newSceneMesh => { |
| 2464 | + const _makeSetSceneBinding = _save => async newSceneMesh => { |
2457 | 2465 | if (newSceneMesh) { |
2458 | 2466 | const tokenApps = newSceneMesh.token.apps.concat([{ |
2459 | 2467 | appType: mesh.type, |
|
2462 | 2470 | orientation: mesh.moveMesh.quaternion.toArray(), |
2463 | 2471 | }]); |
2464 | 2472 | const apps = newSceneMesh.apps.concat([mesh]); |
2465 | | - _save(newSceneMesh.token.id, tokenApps) |
2466 | | - .then(() => { |
2467 | | - newSceneMesh.apps = apps; |
2468 | | - newSceneMesh.token.apps = tokenApps; |
2469 | 2473 |
|
2470 | | - mesh.moveMesh.material.color.setHex(0x9ccc65); |
2471 | | - }); |
| 2474 | + if (_save) { |
| 2475 | + await _save(newSceneMesh.token.id, tokenApps); |
| 2476 | + } |
| 2477 | + |
| 2478 | + newSceneMesh.apps = apps; |
| 2479 | + newSceneMesh.token.apps = tokenApps; |
| 2480 | + |
| 2481 | + mesh.moveMesh.material.color.setHex(0x9ccc65); |
2472 | 2482 | } else { |
2473 | | - if (mesh.scene) { |
2474 | | - const index = mesh.scene.apps.indexOf(mesh); |
2475 | | - const tokenApps = mesh.scene.token.apps.slice(); |
| 2483 | + const {scene: oldScene} = mesh; |
| 2484 | + if (oldScene) { |
| 2485 | + const index = oldScene.apps.indexOf(mesh); |
| 2486 | + const tokenApps = oldScene.token.apps.slice(); |
2476 | 2487 | tokenApps.splice(index, 1); |
2477 | | - const apps = mesh.scene.apps.slice(); |
| 2488 | + const apps = oldScene.apps.slice(); |
2478 | 2489 | apps.splice(index, 1); |
2479 | | - _save(newSceneMesh.token.id, tokenApps) |
2480 | | - .then(() => { |
2481 | | - mesh.scene.token.apps = tokenApps; |
2482 | | - mesh.scene.apps = apps; |
2483 | 2490 |
|
2484 | | - mesh.moveMesh.material.color.setHex(0x333333); |
2485 | | - }); |
| 2491 | + if (_save) { |
| 2492 | + await _save(oldScene.token.id, tokenApps); |
| 2493 | + } |
| 2494 | + |
| 2495 | + oldScene.token.apps = tokenApps; |
| 2496 | + oldScene.apps = apps; |
| 2497 | + |
| 2498 | + mesh.moveMesh.material.color.setHex(0x333333); |
2486 | 2499 | } |
2487 | 2500 | } |
2488 | 2501 | mesh.scene = newSceneMesh; |
|
2605 | 2618 | }, i => { |
2606 | 2619 | _moveApp(iconMesh, i); |
2607 | 2620 | }, () => { |
| 2621 | + if (iconMesh.scene) { |
| 2622 | + const index = iconMesh.scene.apps.indexOf(iconMesh); |
| 2623 | + if (index !== -1) { |
| 2624 | + iconMesh.scene.token.apps.splice(index, 1); |
| 2625 | + // XXX save |
| 2626 | + } |
| 2627 | + } |
| 2628 | + |
2608 | 2629 | _removeApp(iconMesh); |
2609 | | - _destroyApp(iconMesh) |
| 2630 | + _destroyApp(iconMesh); |
2610 | 2631 | }, true); |
2611 | 2632 |
|
2612 | 2633 | _addApp(iconMesh); |
|
2663 | 2684 | layers.splice(layers.indexOf(iconMesh.iframe), 1); |
2664 | 2685 | } |
2665 | 2686 |
|
2666 | | - if (!trayMesh.appIconMeshes.children.some(iconMesh => iconMesh.x === selectedIconCoord.x && iconMesh.y === selectedIconCoord.y)) { |
| 2687 | + // if (!trayMesh.appIconMeshes.children.some(iconMesh => iconMesh.x === selectedIconCoord.x && iconMesh.y === selectedIconCoord.y)) { |
| 2688 | + if (selectedIconMesh === trayMesh.appIconMeshes) { |
2667 | 2689 | if (trayMesh.appIconMeshes.children.some(iconMesh => iconMesh.x === 0 && iconMesh.y === 0)) { |
2668 | 2690 | selectedIconCoord.set(0, 0); |
2669 | 2691 | } else { |
2670 | 2692 | selectedIconMesh = trayMesh.actionIconMeshes; |
2671 | 2693 | selectedIconCoord.set(1, 0); |
2672 | 2694 | selectedIconPage = 0; |
2673 | | - |
| 2695 | + |
2674 | 2696 | trayMesh.labelMesh.textMesh.setText(DEFAULT_URL); |
2675 | 2697 | trayMesh.labelMesh.visible = true; |
2676 | | - trayMesh.actionIconMeshes.children.find(mesh => mesh.x === 5 && mesh.y === 1).localVisible = true; |
2677 | | - trayMesh.mapMesh.localVisible = false; |
2678 | 2698 | } |
2679 | 2699 | } |
2680 | 2700 | }; |
|
2687 | 2707 | const index = sceneMesh.apps.indexOf(iconMesh); |
2688 | 2708 | if (index !== -1) { |
2689 | 2709 | sceneMesh.apps.splice(index, 1); |
2690 | | - sceneMesh.token.apps.splice(index, 1); |
2691 | 2710 | } else { |
2692 | 2711 | break; |
2693 | 2712 | } |
|
2820 | 2839 | }], |
2821 | 2840 | [chevronUpImg, 4, 1, () => { |
2822 | 2841 | console.log('up'); |
2823 | | - if (user) { |
| 2842 | + if (user && !_isInMultiverse()) { |
2824 | 2843 | mapMesh.positionOffset.y = 0.1; |
2825 | 2844 | mapMesh.minimapMesh.material.uniforms.uType.value = 1; |
2826 | 2845 |
|
|
2834 | 2853 | }], |
2835 | 2854 | [chevronDownImg, 4, 0, () => { |
2836 | 2855 | console.log('down'); |
2837 | | - mapMesh.positionOffset.y = 0; |
2838 | | - mapMesh.minimapMesh.material.uniforms.uType.value = 0; |
| 2856 | + if (_isInMultiverse()) { |
| 2857 | + mapMesh.positionOffset.y = 0; |
| 2858 | + mapMesh.minimapMesh.material.uniforms.uType.value = 0; |
2839 | 2859 |
|
2840 | | - for (let i = 0; i < sceneMeshes.length; i++) { |
2841 | | - const sceneMesh = sceneMeshes[i]; |
2842 | | - sceneMesh.destroy(); |
2843 | | - scene.remove(sceneMesh); |
| 2860 | + for (let i = 0; i < sceneMeshes.length; i++) { |
| 2861 | + const sceneMesh = sceneMeshes[i]; |
| 2862 | + sceneMesh.destroy(); |
| 2863 | + scene.remove(sceneMesh); |
| 2864 | + } |
| 2865 | + sceneMeshes.length = 0; |
2844 | 2866 | } |
2845 | | - sceneMeshes.length = 0; |
2846 | 2867 | }], |
2847 | 2868 | [saveImg, 4, 2, () => { |
2848 | 2869 | if (selectedSceneToken) { |
|
2872 | 2893 | const maxY = (coord[1]+1)*7 - 3 - 0.5; |
2873 | 2894 | return iconMesh.moveMesh.position.x >= minX && iconMesh.moveMesh.position.x < maxX && iconMesh.moveMesh.position.z >= minY && iconMesh.moveMesh.position.z < maxY; |
2874 | 2895 | })) { |
2875 | | - tokenApps.push(sceneMesh.token.apps[i]); |
| 2896 | + tokenApps.push(sceneMesh.token.apps[j]); |
2876 | 2897 | apps.push(iconMesh); |
2877 | 2898 | } |
2878 | 2899 | } |
|
2884 | 2905 | for (let i = 0; i < selectedSceneMeshes.length; i++) { |
2885 | 2906 | const oldSceneMesh = selectedSceneMeshes[i]; |
2886 | 2907 | for (let j = 0; j < oldSceneMesh.apps.length; j++) { |
2887 | | - if (apps.indexOf(oldSceneMesh.apps[j]) === -1) { |
| 2908 | + if (!apps.includes(oldSceneMesh.apps[j])) { |
2888 | 2909 | _removeApp(iconMesh); |
2889 | 2910 | _destroyApp(iconMesh); |
2890 | 2911 | } |
|
0 commit comments