{"version":3,"file":"RectAreaLightHelper.cjs","sources":["../../src/helpers/RectAreaLightHelper.js"],"sourcesContent":["import {\n BackSide,\n BufferGeometry,\n Float32BufferAttribute,\n Line,\n LineBasicMaterial,\n Mesh,\n MeshBasicMaterial,\n} from 'three'\n\n/**\n * This helper must be added as a child of the light\n */\n\nclass RectAreaLightHelper extends Line {\n constructor(light, color) {\n const positions = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0]\n\n const geometry = new BufferGeometry()\n geometry.setAttribute('position', new Float32BufferAttribute(positions, 3))\n geometry.computeBoundingSphere()\n\n const material = new LineBasicMaterial({ fog: false })\n\n super(geometry, material)\n\n this.light = light\n this.color = color // optional hardwired color for the helper\n this.type = 'RectAreaLightHelper'\n\n //\n\n const positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0]\n\n const geometry2 = new BufferGeometry()\n geometry2.setAttribute('position', new Float32BufferAttribute(positions2, 3))\n geometry2.computeBoundingSphere()\n\n this.add(new Mesh(geometry2, new MeshBasicMaterial({ side: BackSide, fog: false })))\n }\n\n updateMatrixWorld() {\n this.scale.set(0.5 * this.light.width, 0.5 * this.light.height, 1)\n\n if (this.color !== undefined) {\n this.material.color.set(this.color)\n this.children[0].material.color.set(this.color)\n } else {\n this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)\n\n // prevent hue shift\n const c = this.material.color\n const max = Math.max(c.r, c.g, c.b)\n if (max > 1) c.multiplyScalar(1 / max)\n\n this.children[0].material.color.copy(this.material.color)\n }\n\n // ignore world scale on light\n this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld)\n\n this.children[0].matrixWorld.copy(this.matrixWorld)\n }\n\n dispose() {\n this.geometry.dispose()\n this.material.dispose()\n this.children[0].geometry.dispose()\n this.children[0].material.dispose()\n }\n}\n\nexport { RectAreaLightHelper }\n"],"names":["Line","BufferGeometry","Float32BufferAttribute","LineBasicMaterial","Mesh","MeshBasicMaterial","BackSide"],"mappings":";;;AAcA,MAAM,4BAA4BA,MAAAA,KAAK;AAAA,EACrC,YAAY,OAAO,OAAO;AACxB,UAAM,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AAElE,UAAM,WAAW,IAAIC,qBAAgB;AACrC,aAAS,aAAa,YAAY,IAAIC,MAAAA,uBAAuB,WAAW,CAAC,CAAC;AAC1E,aAAS,sBAAuB;AAEhC,UAAM,WAAW,IAAIC,MAAAA,kBAAkB,EAAE,KAAK,MAAK,CAAE;AAErD,UAAM,UAAU,QAAQ;AAExB,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,OAAO;AAIZ,UAAM,aAAa,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC;AAE9E,UAAM,YAAY,IAAIF,qBAAgB;AACtC,cAAU,aAAa,YAAY,IAAIC,MAAAA,uBAAuB,YAAY,CAAC,CAAC;AAC5E,cAAU,sBAAuB;AAEjC,SAAK,IAAI,IAAIE,MAAI,KAAC,WAAW,IAAIC,MAAAA,kBAAkB,EAAE,MAAMC,MAAAA,UAAU,KAAK,MAAK,CAAE,CAAC,CAAC;AAAA,EACpF;AAAA,EAED,oBAAoB;AAClB,SAAK,MAAM,IAAI,MAAM,KAAK,MAAM,OAAO,MAAM,KAAK,MAAM,QAAQ,CAAC;AAEjE,QAAI,KAAK,UAAU,QAAW;AAC5B,WAAK,SAAS,MAAM,IAAI,KAAK,KAAK;AAClC,WAAK,SAAS,CAAC,EAAE,SAAS,MAAM,IAAI,KAAK,KAAK;AAAA,IACpD,OAAW;AACL,WAAK,SAAS,MAAM,KAAK,KAAK,MAAM,KAAK,EAAE,eAAe,KAAK,MAAM,SAAS;AAG9E,YAAM,IAAI,KAAK,SAAS;AACxB,YAAM,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC,UAAI,MAAM;AAAG,UAAE,eAAe,IAAI,GAAG;AAErC,WAAK,SAAS,CAAC,EAAE,SAAS,MAAM,KAAK,KAAK,SAAS,KAAK;AAAA,IACzD;AAGD,SAAK,YAAY,gBAAgB,KAAK,MAAM,WAAW,EAAE,MAAM,KAAK,KAAK,EAAE,aAAa,KAAK,MAAM,WAAW;AAE9G,SAAK,SAAS,CAAC,EAAE,YAAY,KAAK,KAAK,WAAW;AAAA,EACnD;AAAA,EAED,UAAU;AACR,SAAK,SAAS,QAAS;AACvB,SAAK,SAAS,QAAS;AACvB,SAAK,SAAS,CAAC,EAAE,SAAS,QAAS;AACnC,SAAK,SAAS,CAAC,EAAE,SAAS,QAAS;AAAA,EACpC;AACH;;"}