QuadtreePrimitive代码执行4个步骤:
step1: update()step2: beginFrame()step3: render()step4: endFrame()但并不是瓦片的创建步骤。
QuadtreeTile 基于 step3: render()step3: render()
┖ selectTilesForRendering()
在 selectTilesForRendering中, 创建 QuadtreeTile。
然后将QuadtreeTile加入到_tileLoadQueueHigh队列。
GlobeSurfaceTile 基于 step4: endFrame()在 GlobeSurfaceTile.initialize() 中创建 GlobeSurfaceTile。
step4: endFrame()
┖ processTileLoadQueue()
┖ processSinglePriorityLoadQueue()
┖ (tileProvider as GlobeSurfaceTileProvider).loadTile()
┖ GlobeSurfaceTile.processStateMachine()
┖ GlobeSurfaceTile.initialize()
并且在 GlobeSurfaceTile.initialize 中, tile.state 状态发生切换:
QuadtreeTileLoadState.START => QuadtreeTileLoadState.LOADING
TileImagery 和 imagery 基于 step4: endFrame()基于step3: render()中的GlobeSurfaceTile.initialize中:
在 (layer as ImageryLayer)._createTileImagerySkeletons() 中创建 TileImagery 和 imagery
GlobeSurfaceTile.initialize()
┖ prepareNewTile()
┖ (layer as ImageryLayer)._createTileImagerySkeletons()
step4: endFrame()step4: endFrame()
┖ processTileLoadQueue()
┖ processSinglePriorityLoadQueue()
┖ (tileProvider as GlobeSurfaceTileProvider).loadTile()
┖ GlobeSurfaceTile.processStateMachine()
┃
┃ // 网格状态机
┠ processTerrainStateMachine()
┃
┃ // 栅格状态机
┖ surfaceTile.processImagery()
┖ (image as Imagery).processStateMachine()
后面 GlobeSurfaceTile的状态切换就由 processStateMachine处理。


