diff --git a/docs/api-reference/layer.md b/docs/api-reference/layer.md index a2a2f88c3b1..ae7f9053698 100644 --- a/docs/api-reference/layer.md +++ b/docs/api-reference/layer.md @@ -344,6 +344,7 @@ The context object stores information that are shared by all layers. * `gl` ([WebGLRenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext)) - WebGL context of the current canvas. * `viewport` ([Viewport](/docs/api-reference/viewport.md)) - The current viewport +* `deck` ([Deck](/docs/api-reference/deck.md)) - The current deck.gl instance ##### `state` (Object) diff --git a/modules/core/src/lib/deck.js b/modules/core/src/lib/deck.js index 7781a7a5c93..df5f2d83c06 100644 --- a/modules/core/src/lib/deck.js +++ b/modules/core/src/lib/deck.js @@ -528,6 +528,7 @@ export default class Deck { const viewport = this.viewManager.getViewports()[0]; // Note: avoid React setState due GL animation loop / setState timing issue this.layerManager = new LayerManager(gl, { + deck: this, stats: this.stats, viewport }); diff --git a/modules/core/src/lib/layer-manager.js b/modules/core/src/lib/layer-manager.js index 5e13705ea7b..1211d0e0727 100644 --- a/modules/core/src/lib/layer-manager.js +++ b/modules/core/src/lib/layer-manager.js @@ -43,6 +43,7 @@ const LOG_PRIORITY_LIFECYCLE_MINOR = 4; // CONTEXT IS EXPOSED TO LAYERS const INITIAL_CONTEXT = Object.seal({ layerManager: null, + deck: null, gl: null, // Settings @@ -64,7 +65,7 @@ const layerName = layer => (layer instanceof Layer ? `${layer}` : !layer ? 'null export default class LayerManager { // eslint-disable-next-line - constructor(gl, {stats, viewport = null} = {}) { + constructor(gl, {deck, stats, viewport = null} = {}) { // Currently deck.gl expects the DeckGL.layers array to be different // whenever React rerenders. If the same layers array is used, the // LayerManager's diffing algorithm will generate a fatal error and @@ -79,7 +80,7 @@ export default class LayerManager { this.context = Object.assign({}, INITIAL_CONTEXT, { layerManager: this, - + deck, gl, // Enabling luma.gl Program caching using private API (_cachePrograms) shaderCache: gl && new ShaderCache({gl, _cachePrograms: true}),