| 12345678910111213 |
- import assert from 'node:assert/strict'
- import {BoundingSphere,Cartesian3,PerspectiveFrustum,Intersect} from 'cesium'
- import {contentAdmission,selectDetailRegions} from '../../src/modules/cockpit/services/regionLoading.js'
- const position=new Cartesian3(0,0,0),direction=new Cartesian3(0,1,0),up=new Cartesian3(0,0,1),frustum=new PerspectiveFrustum({fov:Math.PI/3,aspectRatio:1.6,near:1,far:10000}),volume=frustum.computeCullingVolume(position,direction,up)
- const visible=s=>volume.computeVisibility(s)!==Intersect.OUTSIDE,centerDistance=s=>Cartesian3.distance(position,s.center)
- const broad=new BoundingSphere(new Cartesian3(0,100,0),1500),behind=new BoundingSphere(new Cartesian3(0,-100,0),10),side=new BoundingSphere(new Cartesian3(1200,100,0),10),front=new BoundingSphere(new Cartesian3(0,300,0),10)
- assert.equal(visible(broad),true,'old hollow region root intersects frustum')
- const rejected=contentAdmission([behind,side],visible,centerDistance);assert.equal(rejected.distance,Infinity,'no visible building content must not occupy slot')
- const admitted=contentAdmission([behind,front],visible,centerDistance);assert.equal(admitted.distance,290);assert.equal(admitted.centerDistance,300)
- const regions=[{id:0,retryAt:0,contentCount:50,active:true,...rejected},{id:1,retryAt:0,contentCount:20,active:false,...admitted}]
- assert.deepEqual(selectDetailRegions(regions),[1],'visible buildings take slot from hollow active region')
- assert.deepEqual(selectDetailRegions(regions,{pipeline:true}),[])
- console.log(JSON.stringify({passed:true,actualCesiumFrustum:true,hollowRootRejected:true,visibleContentAdmitted:true,pipelineRegions:0}))
|