{"version":3,"file":"PolygonPrimitive.mjs","sources":["../../../../../packages/shared/src/PolygonPrimitive.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-19 14:20:47\n * @LastEditTime: 2022-01-07 11:40:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\PolygonPrimitive.ts\n */\n\nclass PolygonPrimitive {\n  show: boolean\n  _id: string\n  _positions: Array<Cesium.Cartesian3>\n  _boundingSphere: Cesium.BoundingSphere\n  _primitive: Cesium.Primitive | Cesium.GroundPrimitive | undefined\n  _update: boolean\n  _ellipsoid: Cesium.Ellipsoid\n  _clampToGround: boolean\n  _classificationType: number\n  _allowPicking: boolean\n  _asynchronous: boolean\n  _polygonHierarchy: Cesium.PolygonHierarchy\n  _appearance: Cesium.Appearance\n  _depthFailAppearance: Cesium.Appearance\n\n  constructor(options) {\n    const { defined, defaultValue, Color, createGuid, BoundingSphere, Ellipsoid, ClassificationType } = Cesium\n    options = defaultValue(options, {})\n    this.show = defaultValue(options.show, true)\n    this._id = defined(options.id) ? options.id : createGuid()\n    this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n    this._appearance = defaultValue(options.appearance, new Cesium.MaterialAppearance())\n    this._depthFailAppearance = options.depthFailAppearance\n    this._positions = defaultValue(options.positions, [])\n    this._polygonHierarchy = options.polygonHierarchy\n    this._clampToGround = defaultValue(options.clampToGround, false)\n    this._classificationType = defaultValue(options.classificationType, ClassificationType.BOTH)\n    this._allowPicking = defaultValue(options.allowPicking, true)\n    this._asynchronous = defaultValue(options.asynchronous, false)\n    this._boundingSphere = new BoundingSphere()\n    this._primitive = void 0\n    this._update = true\n  }\n\n  get positions() {\n    return this._positions\n  }\n  set positions(val) {\n    this._positions = val\n    this._update = true\n  }\n\n  get polygonHierarchy() {\n    return this._polygonHierarchy\n  }\n  set polygonHierarchy(val) {\n    this._polygonHierarchy = val\n    this._update = true\n  }\n\n  get appearance() {\n    return this._appearance\n  }\n  set appearance(val) {\n    this._appearance = val\n    if (this._primitive !== undefined) {\n      this._primitive.appearance = val\n    }\n  }\n\n  get depthFailAppearance() {\n    return this._depthFailAppearance\n  }\n  set depthFailAppearance(val) {\n    this._depthFailAppearance = val\n    if (this._primitive !== undefined && this._primitive instanceof Cesium.Primitive) {\n      this._primitive.depthFailAppearance = val\n    }\n  }\n\n  get id() {\n    return this._id\n  }\n  set id(id) {\n    this._id = id\n  }\n\n  get boundingVolume() {\n    return this._boundingSphere\n  }\n\n  get ellipsoid() {\n    return this._ellipsoid\n  }\n\n  get clampToGround() {\n    return this._clampToGround\n  }\n  set clampToGround(val) {\n    this._clampToGround = val\n  }\n\n  get classificationType() {\n    return this._classificationType\n  }\n  set classificationType(e) {\n    this._classificationType = e\n    this._update = true\n  }\n\n  get allowPicking() {\n    return this._allowPicking\n  }\n  set allowPicking(val) {\n    this._allowPicking = val\n  }\n\n  get asynchronous() {\n    return this._asynchronous\n  }\n  set asynchronous(val) {\n    this._asynchronous = val\n  }\n\n  async update(frameState) {\n    if (this.show) {\n      const positions = this._polygonHierarchy ? this._polygonHierarchy.positions : this._positions\n      if (positions.length < 3) {\n        this._primitive && this._primitive.destroy()\n        this._primitive = undefined\n      } else {\n        if (this._update) {\n          this._update = false\n\n          let promise\n          if (this._clampToGround) {\n            promise = this._createGroundPolygon()\n          } else {\n            promise = this._createPolygon()\n          }\n          promise.then(primitive => {\n            this._primitive && this._primitive.destroy()\n            this._primitive = undefined\n            this._primitive = primitive\n            ;(this._primitive as any)._vcParent = this\n            this._boundingSphere = Cesium.BoundingSphere.fromPoints(positions, this._boundingSphere)\n          })\n        }\n        this._primitive && (this._primitive as any).update(frameState)\n      }\n    }\n  }\n\n  async _createPolygon() {\n    const { Primitive, GeometryInstance, CoplanarPolygonGeometry, Cartesian3 } = Cesium\n    return new Primitive({\n      geometryInstances: new GeometryInstance({\n        geometry: this._polygonHierarchy\n          ? new CoplanarPolygonGeometry({\n              polygonHierarchy: this._polygonHierarchy,\n              ellipsoid: this._ellipsoid\n            })\n          : CoplanarPolygonGeometry.fromPositions({\n              positions: this._positions.map(function (e) {\n                return Cartesian3.clone(e)\n              }),\n              ellipsoid: this._ellipsoid\n            }),\n        id: this._id\n      }),\n      appearance: this._appearance,\n      depthFailAppearance: this._depthFailAppearance,\n      allowPicking: this._allowPicking,\n      asynchronous: this._asynchronous\n    })\n  }\n\n  async _createGroundPolygon() {\n    const { GroundPrimitive, GeometryInstance, PolygonGeometry, Cartesian3 } = Cesium\n    await Cesium.GroundPrimitive.initializeTerrainHeights()\n    return new GroundPrimitive({\n      geometryInstances: new GeometryInstance({\n        geometry: this._polygonHierarchy\n          ? new PolygonGeometry({\n              polygonHierarchy: this._polygonHierarchy,\n              ellipsoid: this._ellipsoid\n            })\n          : PolygonGeometry.fromPositions({\n              positions: this._positions.map(function (e) {\n                return Cartesian3.clone(e)\n              }),\n              ellipsoid: this._ellipsoid\n            }),\n        id: this._id\n      }),\n      appearance: this._appearance,\n      allowPicking: this._allowPicking,\n      asynchronous: this._asynchronous,\n      classificationType: this._classificationType\n    })\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    this._primitive && this._primitive.destroy()\n    this._primitive = undefined\n    return Cesium.destroyObject(this)\n  }\n}\n\nexport default PolygonPrimitive\n"],"names":[],"mappings":"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"}