import { ColoringFragmentBase } from '../../core/ColoringFragment'; import { TileLayer, TileLayerOptions } from '../TileLayer'; import { ParticleLayerOptions } from './type'; /** * Extended version of {@link TileLayer}, which does particle-based animation on top the data. * * The standard raster visualization of {@link TileLayer} can be used simultanously over the same data. */ declare class ParticleLayer extends TileLayer { private rttScene; private rttCamera; private rttMaterial; private rttMesh; private particleTexturePrev; private particleTexture0; private particleTexture1; private particleMaterial; private particles; private particleBackground; private accumulator; private accumulatorDrawMesh; private flipFlop; private numParticles; private particleDensity; private refreshInterval; private fadeFactor; private particleColor; private particleFastColor; private particleFastSpeed; private particleSize; private drawAsLines; private particleSpeed; private pixelRatio; private prevRenderTime; private lastRenderTime; private forceRender; private rttTimestep; private tileGridPass; private particlesTexturePreview; /** * @param id Unique identifier of the layer in the map. * @param options * @param particleOptions * @param coloringFragments If not null, the same data will also be displayed as raster. */ constructor(id: string, options: TileLayerOptions | null, particleOptions: ParticleLayerOptions | null, coloringFragments?: ColoringFragmentBase[] | null); /** * TODO: Add description */ initParticle(options: TileLayerOptions, particleOptions: ParticleLayerOptions, coloringFragments?: ColoringFragmentBase[] | null): void; /** * TODO: Add description */ private generateRandomizeParticleTexture; /** * TODO: Add description */ private randomizeParticles; /** * Returns the ratio between the number of actually visible particle * (to statisfy the specified density) and the maximum amount (maxAmount). * * Value >1 mean that more particles would be utilized if availabe. * * Useful for debugging and fine-tuning client application. */ getParticleUtilization(): number; /** * TODO: Add description */ setOpacity(opacity: number): void; /** * TODO: Add description */ protected disposeObjects(): void; /** * Called in refresh method * It is important for globe projection, especially for low zoom levels */ private updateRenderingSize; /** * Called by onMoveEnd in parent class. */ protected refresh(): void; /** * Called by prerender in parent class. */ protected prerenderInternal(): void; /** * TODO: Add description */ private refreshMercator; /** * TODO: Add description */ private prerenderInternalMercator; /** * Called by `refresh` method. * Refresh logic is different for globe and mercator projection. */ private refreshGlobe; /** * Called by `prerenderInternal` method. * Prerender logic is different for globe and mercator projection. */ private prerenderInternalGlobe; /** * Called by render in parent class. */ protected renderInternal(): void; } export { ParticleLayer };