More
This commit is contained in:
parent
128b3191e7
commit
03445188ea
54 changed files with 596953 additions and 3577 deletions
53
frontend/src/lib/MarchingAntsExtension.ts
Normal file
53
frontend/src/lib/MarchingAntsExtension.ts
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import { LayerExtension } from '@deck.gl/core';
|
||||
|
||||
/** Animates a marching-ants border on PathLayer sublayers (alternating white/green dashes). */
|
||||
export class MarchingAntsExtension extends LayerExtension {
|
||||
static extensionName = 'MarchingAntsExtension';
|
||||
static defaultProps = {
|
||||
marchTime: { type: 'number', value: 0 },
|
||||
};
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
isEnabled(layer: any): boolean {
|
||||
return 'pathTesselator' in layer.state;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
getShaders(extension: any): any {
|
||||
if (!extension.isEnabled(this)) return null;
|
||||
return {
|
||||
modules: [
|
||||
{
|
||||
name: 'marchingAnts',
|
||||
inject: {
|
||||
'fs:#decl': `\
|
||||
uniform marchingAntsUniforms {
|
||||
float marchTime;
|
||||
} marchingAnts;`,
|
||||
'fs:DECKGL_FILTER_COLOR': `\
|
||||
float marchSegLen = 4.0;
|
||||
float marchPos = mod(vPathPosition.y - marchingAnts.marchTime, marchSegLen * 2.0);
|
||||
if (marchPos < marchSegLen) {
|
||||
color = vec4(1.0, 1.0, 1.0, color.a);
|
||||
} else {
|
||||
color = vec4(0.114, 0.894, 0.765, color.a);
|
||||
}`,
|
||||
},
|
||||
uniformTypes: {
|
||||
marchTime: 'f32',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
updateState(_params: any, extension: any): void {
|
||||
if (!extension.isEnabled(this)) return;
|
||||
// @ts-expect-error setShaderModuleProps exists on Layer
|
||||
this.setShaderModuleProps({
|
||||
// @ts-expect-error marchTime is a custom prop from this extension
|
||||
marchingAnts: { marchTime: this.props.marchTime || 0 },
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue