{"version":3,"file":"ThreeLightSpot.mjs","sources":["../../../../packages/ThreeLightSpot/ThreeLightSpot.ts"],"sourcesContent":["import {SpotLight, Color} from 'three';\r\nimport type {Vec} from './Type';\r\nimport type CustomThreeLayer from '../ThreeLayer/CustomThreeLayer'\r\n\r\ninterface Options {\r\n  color: string // 颜色的rgb数值。缺省值为 0xffffff。\r\n  intensity: number  // 光照的强度。缺省值为 1。\r\n  distance: number // 这个距离表示从光源到光照强度为0的位置。 当设置为0时，光永远不会消失(距离无穷大)\r\n  angle: number // 光线散射角度，最大为Math.PI/2\r\n  penumbra: number // 聚光锥的半影衰减百分比。在0和1之间的值。默认为0\r\n  decay: number // 沿着光照距离的衰退量。缺省值 1\r\n  position: Vec // 点位置\r\n  target: any // 目标模型\r\n}\r\n\r\nclass ThreeLightSpot {\r\n  object: SpotLight | null // Light\r\n  layer: CustomThreeLayer | null // threejs的图层对象\r\n\r\n  constructor(layer: CustomThreeLayer, options: Options) {\r\n    this.layer = layer;\r\n    const light = new SpotLight(this.getColorHex(options.color), options.intensity, options.distance, options.angle, options.penumbra, options.decay);\r\n    this.object = light;\r\n    this.setPosition(options.position);\r\n    this.setTarget(options.target);\r\n    layer.add(light);\r\n  }\r\n\r\n  setColor(color: string) {\r\n    this.object!.color = new Color(color);\r\n    this.refresh();\r\n  }\r\n\r\n  getColorHex(color: string){\r\n    return new Color(color).getHex();\r\n  }\r\n\r\n  setIntensity(intensity: number) {\r\n    this.object!.intensity = intensity;\r\n    this.refresh();\r\n  }\r\n\r\n  setPosition(position: Vec){\r\n    const positionConvert = this.layer?.convertLngLat([position.x, position.y]);\r\n    this.object!.position.set(positionConvert[0], positionConvert[1], position.z);\r\n    this.refresh();\r\n  }\r\n\r\n  setTarget(target?: any) {\r\n    if(target){\r\n      this.object!.target = target;\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  refresh() {\r\n    this.layer?.update();\r\n  }\r\n\r\n  remove(){\r\n    if (this.object) {\r\n      this.layer?.remove(this.object)\r\n    }\r\n  }\r\n\r\n  destroy() {\r\n    if (this.object) {\r\n      this.object = null;\r\n      this.layer = null;\r\n    }\r\n  }\r\n}\r\n\r\nexport default ThreeLightSpot\r\n"],"names":[],"mappings":";;;;;;;;AAeA,MAAM,cAAe,CAAA;AAAA;AAAA,EAInB,WAAA,CAAY,OAAyB,OAAkB,EAAA;AAHvD,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAGE,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,IAAA,MAAM,QAAQ,IAAI,SAAA,CAAU,IAAK,CAAA,WAAA,CAAY,QAAQ,KAAK,CAAA,EAAG,OAAQ,CAAA,SAAA,EAAW,QAAQ,QAAU,EAAA,OAAA,CAAQ,OAAO,OAAQ,CAAA,QAAA,EAAU,QAAQ,KAAK,CAAA,CAAA;AAChJ,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA;AACd,IAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,QAAQ,CAAA,CAAA;AACjC,IAAK,IAAA,CAAA,SAAA,CAAU,QAAQ,MAAM,CAAA,CAAA;AAC7B,IAAA,KAAA,CAAM,IAAI,KAAK,CAAA,CAAA;AAAA,GACjB;AAAA,EAEA,SAAS,KAAe,EAAA;AACtB,IAAA,IAAA,CAAK,MAAQ,CAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAK,CAAA,CAAA;AACpC,IAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,GACf;AAAA,EAEA,YAAY,KAAc,EAAA;AACxB,IAAA,OAAO,IAAI,KAAA,CAAM,KAAK,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,GACjC;AAAA,EAEA,aAAa,SAAmB,EAAA;AAC9B,IAAA,IAAA,CAAK,OAAQ,SAAY,GAAA,SAAA,CAAA;AACzB,IAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,GACf;AAAA,EAEA,YAAY,QAAc,EAAA;AA1C5B,IAAA,IAAA,EAAA,CAAA;AA2CI,IAAM,MAAA,eAAA,GAAA,CAAkB,UAAK,KAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,cAAc,CAAC,QAAA,CAAS,CAAG,EAAA,QAAA,CAAS,CAAC,CAAA,CAAA,CAAA;AACzE,IAAK,IAAA,CAAA,MAAA,CAAQ,QAAS,CAAA,GAAA,CAAI,eAAgB,CAAA,CAAC,GAAG,eAAgB,CAAA,CAAC,CAAG,EAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC5E,IAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,GACf;AAAA,EAEA,UAAU,MAAc,EAAA;AACtB,IAAA,IAAG,MAAO,EAAA;AACR,MAAA,IAAA,CAAK,OAAQ,MAAS,GAAA,MAAA,CAAA;AACtB,MAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,KACf;AAAA,GACF;AAAA,EAEA,OAAU,GAAA;AAvDZ,IAAA,IAAA,EAAA,CAAA;AAwDI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,UAAL,IAAY,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAQ,GAAA;AA3DV,IAAA,IAAA,EAAA,CAAA;AA4DI,IAAA,IAAI,KAAK,MAAQ,EAAA;AACf,MAAK,CAAA,EAAA,GAAA,IAAA,CAAA,KAAA,KAAL,IAAY,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAO,IAAK,CAAA,MAAA,CAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEA,OAAU,GAAA;AACR,IAAA,IAAI,KAAK,MAAQ,EAAA;AACf,MAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAA;AACd,MAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAA;AAAA,KACf;AAAA,GACF;AACF;;;;"}