preRasterLank (resource, thang, layer) {
    if ((this.layerAdapters[layer || DEFAULT_LAYER]).destroyed) {
      return
    }
    const thangType = this.loader.getThangType(resource)
    if (this.lankCache[thangType.id]) {
      return
    }
    const lank = new Lank(thangType, {
      preloadSounds: false,
      thang: createThang(thang),
      camera: this.camera,
      groundLayer: this.groundLayer,
      isCinematic: true
    })
    this.layerAdapters[layer || DEFAULT_LAYER].addLank(lank)
    this.lankCache[lank.thangType.id] = lank
    if (this.preLoadedLayers[layer || DEFAULT_LAYER] === true) {
      this.preLoadedLayers[layer || DEFAULT_LAYER] = new Promise((resolve, reject) => {
        const unblockTimeout = setTimeout(() => {
          console.error('Cinematic hit render timelimit of 150 seconds')
          resolve()
        }, 150000)
        this.layerAdapters[layer || DEFAULT_LAYER].once('new-spritesheet', () => {
          clearTimeout(unblockTimeout)
          resolve()
        })
      })
    }
  }
This method is used to preload and pre-rasterize lanks.
This is achieved by adding lanks to the layers and then saving the rendered lank
for use later.
Then when the cinematic uses the lank, it is retrieved from the cache pool
and shown. When the cinematic removes the lank, it is hidden and returned to
the cache.
In doing so we no longer need to rasterize during the playback of a cinematic.