|
@@ -41,7 +41,7 @@ export const enter = (dom, isLocal) => {
|
|
|
|
|
|
|
|
|
{
|
|
|
-
|
|
|
+ let index = 1;
|
|
|
//let setDisplay()
|
|
|
|
|
|
if(!Potree.isIframeChild){
|
|
@@ -49,19 +49,44 @@ export const enter = (dom, isLocal) => {
|
|
|
/* viewer.addEventListener('createIframe',(e)=>{//创建了子页面
|
|
|
}) */
|
|
|
window.winIndex = 0;
|
|
|
- let index = 1;
|
|
|
- window.iframeCreated = function(child){
|
|
|
-
|
|
|
+
|
|
|
+ window.iframeCreated = function(iframe){
|
|
|
+ let child = iframe.contentWindow
|
|
|
+ child.winIndex = index++
|
|
|
//案件里视图提取页面子页面覆盖了父级页面,父级的模型可以隐藏以释放内存
|
|
|
- child.beforeDestroy = function(){
|
|
|
- child.winIndex = index++
|
|
|
-
|
|
|
+ child.beforeDestroy = function(){
|
|
|
console.log('window.beforeDestroy', child.winIndex)
|
|
|
|
|
|
child.viewer && child.viewer.setDisplay(false)
|
|
|
//如果是四维看看的场景,先不管了,页面被销毁应该就没了吧
|
|
|
|
|
|
viewer.setDisplay(true )//恢复主页的模型显示
|
|
|
+
|
|
|
+
|
|
|
+ if(!child.viewer){
|
|
|
+ let player = child.__sdk.core.get('Player')
|
|
|
+ /* let runtime = player.model._3dTilesRuntime
|
|
|
+ let tileset = runtime.getTileset()
|
|
|
+ tileset._cache.trim(); //使下一次update时dispose所有不可见的tiles
|
|
|
+ let sceneRenderer = child.__sdk.core.get('SceneRenderer')
|
|
|
+ player.model.visible = false
|
|
|
+ runtime.update(16, sceneRenderer.renderer, sceneRenderer.camera, true) //没用,为何_trimTiles的while无法进入
|
|
|
+ */
|
|
|
+ player.model.traverse(e=>{
|
|
|
+ e.geometry && e.geometry.dispose()
|
|
|
+ if(e.material){
|
|
|
+ e.material.map && e.material.map.dispose()
|
|
|
+ if(e.material.uniforms && e.material.uniforms.map && e.material.uniforms.map.value){
|
|
|
+ e.material.uniforms.map.value.dispose()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }) //效果甚微
|
|
|
+
|
|
|
+ /* let sceneRenderer = child.__sdk.core.get('SceneRenderer')
|
|
|
+ sceneRenderer.renderer.render(sceneRenderer.scene, sceneRenderer.camera)
|
|
|
+ */
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|