|
var gdjs;(function(o){class _{constructor(t,e){this._profilerText=null;this._showCursorAtNextRender=!1;this._threeRenderer=null;this._layerRenderingMetrics={rendered2DLayersCount:0,rendered3DLayersCount:0};this._runtimeGameRenderer=e,this._runtimeScene=t,this._pixiContainer=new PIXI.Container,this._pixiContainer.sortableChildren=!0,this._threeRenderer=this._runtimeGameRenderer?this._runtimeGameRenderer.getThreeRenderer():null}onGameResolutionResized(){const t=this._runtimeGameRenderer?this._runtimeGameRenderer.getPIXIRenderer():null;if(!t)return;const e=this._runtimeScene.getGame();this._pixiContainer.scale.x=t.width/e.getGameResolutionWidth(),this._pixiContainer.scale.y=t.height/e.getGameResolutionHeight();for(const r of this._runtimeScene._orderedLayers)r.getRenderer().onGameResolutionResized()}onSceneUnloaded(){}render(){const t=this._runtimeGameRenderer;if(!t)return;const e=t.getPIXIRenderer();if(!e)return;const r=this._threeRenderer;if(!(r&&r.xr.isPresenting)){if(this._layerRenderingMetrics.rendered2DLayersCount=0,this._layerRenderingMetrics.rendered3DLayersCount=0,r){r.info.autoReset=!1,r.info.reset();let n=!0,s=!0;r.resetState();for(let c=0;c<this._runtimeScene._orderedLayers.length;++c){const a=this._runtimeScene._orderedLayers[c];if(!a.isVisible())continue;const i=a.getRenderer(),l=a.getRenderingType(),m=i.has3DObjects();if(l===o.RuntimeLayerRenderingType.TWO_D||!m){s&&(r.resetState(),e.reset()),n&&(e.background.color=this._runtimeScene.getBackgroundColor(),e.background.alpha=1,this._runtimeScene.getClearCanvas()&&e.clear(),n=!1),a.isLightingLayer()&&i.renderOnPixiRenderTexture(e);const u=a.isLightingLayer()&&i.getLightingSprite()||i.getRendererObject();e.render(u,{clear:!1}),this._layerRenderingMetrics.rendered2DLayersCount++,s=!1}else{const u=i.getThreeScene(),h=i.getThreeCamera(),R=i.getThreeEffectComposer();if(u&&h&&R){if(l===o.RuntimeLayerRenderingType.TWO_D_PLUS_THREE_D){const g=i.has2DObjects();g&&(s&&(r.resetState(),e.reset()),i.renderOnPixiRenderTexture(e),i.updateThreePlaneTextureFromPixiRenderTexture(r,e),this._layerRenderingMetrics.rendered2DLayersCount++,s=!1),i.show2DRenderingPlane(g)}s||(e.reset(),r.resetState()),n?(r.setClearColor(this._runtimeScene.getBackgroundColor()),r.resetState(),this._runtimeScene.getClearCanvas()&&r.clear(),u.background=new THREE.Color(this._runtimeScene.getBackgroundColor()),n=!1):u.background=null,r.clearDepth(),i.hasPostProcessingPass()?R.render():r.render(u,h),this._layerRenderingMetrics.rendered3DLayersCount++,s=!0}}}const d=this._runtimeScene.getDebuggerRenderer().getRendererObject();d&&(r.resetState(),e.reset(),e.render(d),s=!1),s||e.reset()}else{for(const n of this._runtimeScene._orderedLayers)n.isLightingLayer()&&n.getRenderer().renderOnPixiRenderTexture(e);e.background.color=this._runtimeScene.getBackgroundColor(),e.render(this._pixiContainer,{clear:this._runtimeScene.getClearCanvas()}),this._layerRenderingMetrics.rendered2DLayersCount++}if(this._showCursorAtNextRender){const n=t.getCanvas();n&&(n.style.cursor=""),this._showCursorAtNextRender=!1}}}renderForVR(){if(!this._runtimeGameRenderer)return;const e=this._threeRenderer;if(!e)throw new Error("Cannot render a scene with no 3D elements in VR!");let r=!0;for(let n=0;n<this._runtimeScene._orderedLayers.length;++n){const s=this._runtimeScene._orderedLayers[n];if(!s.isVisible())continue;const d=s.getRenderer();if(s.getRenderingType()===o.RuntimeLayerRenderingType.TWO_D||!d.has3DObjects())continue;const a=d.getThreeScene(),i=d.getThreeCamera();!a||!i||(r?(e.setClearColor(this._runtimeScene.getBackgroundColor()),this._runtimeScene.getClearCanvas()&&e.clear(),a.background=new THREE.Color(this._runtimeScene.getBackgroundColor()),r=!1):a.background=null,e.clearDepth(),e.render(a,i))}}_renderProfileText(){const t=this._runtimeScene.getProfiler();if(!t)return;this._profilerText||(this._profilerText=new PIXI.Text(" ",{align:"left",stroke:"#FFF",strokeThickness:1}),this._pixiContainer.addChild(this._profilerText));const e=t.getFramesAverageMeasures(),r=[];o.Profiler.getProfilerSectionTexts("All",e,r),this._profilerText.text=r.join(` |