UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 5.92 kB
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";export class TracingLayerTree extends SDK.LayerTreeBase.LayerTreeBase{tileById;paintProfilerModel;constructor(e){super(e),this.tileById=new Map,this.paintProfilerModel=e&&e.model(SDK.PaintProfiler.PaintProfilerModel)}async setLayers(e,t,n){const r=new Set;if(e)this.extractNodeIdsToResolve(r,{},e);else if(t)for(let e=0;e<t.length;++e)this.extractNodeIdsToResolve(r,{},t[e]);await this.resolveBackendNodeIds(r);const s=this.layersById;if(this.layersById=new Map,this.setContentRoot(null),e){const t=this.innerSetLayers(s,e);this.setRoot(t)}else if(t){const e=t.map(this.innerSetLayers.bind(this,s)),n=this.contentRoot();if(!n)throw new Error("Content root is not set.");this.setRoot(n);for(let t=0;t<e.length;++t)e[t].id()!==n.id()&&n.addChild(e[t])}this.setPaints(n)}setTiles(e){this.tileById=new Map;for(const t of e)this.tileById.set(t.id,t)}pictureForRasterTile(e){const t=this.tileById.get("cc::Tile/"+e);if(!t)return Common.Console.Console.instance().error(`Tile ${e} is missing`),Promise.resolve(null);const n=this.layerById(t.layer_id);return n?n.pictureForRect(t.content_rect):(Common.Console.Console.instance().error(`Layer ${t.layer_id} for tile ${e} is not found`),Promise.resolve(null))}setPaints(e){for(let t=0;t<e.length;++t){const n=this.layersById.get(e[t].layerId());n&&n.addPaintEvent(e[t])}}innerSetLayers(e,t){let n=e.get(t.layer_id);n?n.reset(t):n=new TracingLayer(this.paintProfilerModel,t),this.layersById.set(t.layer_id,n),t.owner_node&&n.setNode(this.backendNodeIdToNode().get(t.owner_node)||null),!this.contentRoot()&&n.drawsContent()&&this.setContentRoot(n);for(let r=0;t.children&&r<t.children.length;++r)n.addChild(this.innerSetLayers(e,t.children[r]));return n}extractNodeIdsToResolve(e,t,n){const r=n.owner_node;r&&!this.backendNodeIdToNode().has(r)&&e.add(r);for(let r=0;n.children&&r<n.children.length;++r)this.extractNodeIdsToResolve(e,t,n.children[r])}}export class TracingLayer{parentLayerId;parentInternal;layerId;nodeInternal;offsetXInternal;offsetYInternal;widthInternal;heightInternal;childrenInternal;quadInternal;scrollRectsInternal;gpuMemoryUsageInternal;paints;compositingReasons;compositingReasonIds;drawsContentInternal;paintProfilerModel;constructor(e,t){this.parentLayerId=null,this.parentInternal=null,this.layerId="",this.nodeInternal=null,this.offsetXInternal=-1,this.offsetYInternal=-1,this.widthInternal=-1,this.heightInternal=-1,this.childrenInternal=[],this.quadInternal=[],this.scrollRectsInternal=[],this.gpuMemoryUsageInternal=-1,this.paints=[],this.compositingReasons=[],this.compositingReasonIds=[],this.drawsContentInternal=!1,this.paintProfilerModel=e,this.reset(t)}reset(e){this.nodeInternal=null,this.layerId=String(e.layer_id),this.offsetXInternal=e.position[0],this.offsetYInternal=e.position[1],this.widthInternal=e.bounds.width,this.heightInternal=e.bounds.height,this.childrenInternal=[],this.parentLayerId=null,this.parentInternal=null,this.quadInternal=e.layer_quad||[],this.createScrollRects(e),this.compositingReasons=e.compositing_reasons||[],this.compositingReasonIds=e.compositing_reason_ids||[],this.drawsContentInternal=Boolean(e.draws_content),this.gpuMemoryUsageInternal=e.gpu_memory_usage,this.paints=[]}id(){return this.layerId}parentId(){return this.parentLayerId}parent(){return this.parentInternal}isRoot(){return!this.parentId()}children(){return this.childrenInternal}addChild(e){const t=e;t.parentInternal&&console.assert(!1,"Child already has a parent"),this.childrenInternal.push(t),t.parentInternal=this,t.parentLayerId=this.layerId}setNode(e){this.nodeInternal=e}node(){return this.nodeInternal}nodeForSelfOrAncestor(){let e=this;for(;e;e=e.parent())if(e.node())return e.node();return null}offsetX(){return this.offsetXInternal}offsetY(){return this.offsetYInternal}width(){return this.widthInternal}height(){return this.heightInternal}transform(){return null}quad(){return this.quadInternal}anchorPoint(){return[.5,.5,0]}invisible(){return!1}paintCount(){return 0}lastPaintRect(){return null}scrollRects(){return this.scrollRectsInternal}stickyPositionConstraint(){return null}gpuMemoryUsage(){return this.gpuMemoryUsageInternal}snapshots(){return this.paints.map((e=>e.snapshotPromise().then((e=>{if(!e)return null;return{rect:{x:e.rect[0],y:e.rect[1],width:e.rect[2],height:e.rect[3]},snapshot:e.snapshot}}))))}pictureForRect(e){return Promise.all(this.paints.map((e=>e.picturePromise()))).then((n=>{const r=n.filter((n=>{return n&&(r=n.rect,s=e,t(r[0],r[0]+r[2],s[0],s[0]+s[2])&&t(r[1],r[1]+r[3],s[1],s[1]+s[3]));var r,s})).map((e=>({x:e.rect[0],y:e.rect[1],picture:e.serializedPicture})));if(!r.length||!this.paintProfilerModel)return null;const s=r.reduce(((e,t)=>Math.min(e,t.x)),1/0),o=r.reduce(((e,t)=>Math.min(e,t.y)),1/0),i={x:e[0]-s,y:e[1]-o,width:e[2],height:e[3]};return this.paintProfilerModel.loadSnapshotFromFragments(r).then((e=>e?{rect:i,snapshot:e}:null))}));function t(e,t,n,r){return console.assert(e<=t&&n<=r,"segments should be specified as ordered pairs"),t>n&&e<r}}scrollRectsFromParams(e,t){return{rect:{x:e[0],y:e[1],width:e[2],height:e[3]},type:t}}createScrollRects(e){const t=[];e.non_fast_scrollable_region&&t.push(this.scrollRectsFromParams(e.non_fast_scrollable_region,"NonFastScrollable")),e.touch_event_handler_region&&t.push(this.scrollRectsFromParams(e.touch_event_handler_region,"TouchEventHandler")),e.wheel_event_handler_region&&t.push(this.scrollRectsFromParams(e.wheel_event_handler_region,"WheelEventHandler")),e.scroll_event_handler_region&&t.push(this.scrollRectsFromParams(e.scroll_event_handler_region,"RepaintsOnScroll")),this.scrollRectsInternal=t}addPaintEvent(e){this.paints.push(e)}requestCompositingReasons(){return Promise.resolve(this.compositingReasons)}requestCompositingReasonIds(){return Promise.resolve(this.compositingReasonIds)}drawsContent(){return this.drawsContentInternal}}