{"version":3,"file":"customPrimitive.mjs","sources":["../../../../../../packages/components/overlays/wind/customPrimitive.ts"],"sourcesContent":["class CustomPrimitive {\n  commandType: string\n  geometry: any\n  attributeLocations: any\n  primitiveType: any\n  uniformMap: any\n  vertexShaderSource: any\n  fragmentShaderSource: any\n  rawRenderState: any\n  framebuffer: any\n  outputTexture: any\n  autoClear: any\n  preExecute: any\n  show: boolean\n  commandToExecute: any\n  clearCommand: any\n  constructor(options) {\n    this.commandType = options.commandType\n\n    this.geometry = options.geometry\n    this.attributeLocations = options.attributeLocations\n    this.primitiveType = options.primitiveType\n\n    this.uniformMap = options.uniformMap\n\n    this.vertexShaderSource = options.vertexShaderSource\n    this.fragmentShaderSource = options.fragmentShaderSource\n\n    this.rawRenderState = options.rawRenderState\n    this.framebuffer = options.framebuffer\n\n    this.outputTexture = options.outputTexture\n\n    this.autoClear = Cesium.defaultValue(options.autoClear, false)\n    this.preExecute = options.preExecute\n\n    this.show = true\n    this.commandToExecute = undefined\n    this.clearCommand = undefined\n    if (this.autoClear) {\n      this.clearCommand = new Cesium.ClearCommand({\n        color: new Cesium.Color(0.0, 0.0, 0.0, 0.0),\n        depth: 1.0,\n        framebuffer: this.framebuffer,\n        pass: Cesium.Pass.OPAQUE\n      })\n    }\n  }\n\n  createCommand(context) {\n    switch (this.commandType) {\n      case 'Draw': {\n        const vertexArray = Cesium.VertexArray.fromGeometry({\n          context: context,\n          geometry: this.geometry,\n          attributeLocations: this.attributeLocations,\n          bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n        })\n\n        const shaderProgram = Cesium.ShaderProgram.fromCache({\n          context: context,\n          attributeLocations: this.attributeLocations,\n          vertexShaderSource: this.vertexShaderSource,\n          fragmentShaderSource: this.fragmentShaderSource\n        })\n\n        const renderState = Cesium.RenderState.fromCache(this.rawRenderState)\n        return new Cesium.DrawCommand({\n          owner: this,\n          vertexArray: vertexArray,\n          primitiveType: this.primitiveType,\n          uniformMap: this.uniformMap,\n          modelMatrix: Cesium.Matrix4.IDENTITY,\n          shaderProgram: shaderProgram,\n          framebuffer: this.framebuffer,\n          renderState: renderState,\n          pass: Cesium.Pass.OPAQUE\n        })\n      }\n      case 'Compute': {\n        return new Cesium.ComputeCommand({\n          owner: this,\n          fragmentShaderSource: this.fragmentShaderSource,\n          uniformMap: this.uniformMap,\n          outputTexture: this.outputTexture,\n          persists: true\n        })\n      }\n    }\n  }\n\n  setGeometry(context, geometry) {\n    this.geometry = geometry\n    const vertexArray = Cesium.VertexArray.fromGeometry({\n      context: context,\n      geometry: this.geometry,\n      attributeLocations: this.attributeLocations,\n      bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n    })\n    this.commandToExecute.vertexArray = vertexArray\n  }\n\n  update(frameState) {\n    if (!this.show) {\n      return\n    }\n\n    if (!Cesium.defined(this.commandToExecute)) {\n      this.commandToExecute = this.createCommand(frameState.context)\n    }\n\n    if (Cesium.defined(this.preExecute)) {\n      this.preExecute()\n    }\n\n    if (Cesium.defined(this.clearCommand)) {\n      frameState.commandList.push(this.clearCommand)\n    }\n    frameState.commandList.push(this.commandToExecute)\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    if (Cesium.defined(this.commandToExecute)) {\n      this.commandToExecute.shaderProgram = this.commandToExecute.shaderProgram && this.commandToExecute.shaderProgram.destroy()\n    }\n    return Cesium.destroyObject(this)\n  }\n}\n\nexport default CustomPrimitive\n"],"names":[],"mappings":"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"}