{"version":3,"file":"XYZLoader.cjs","sources":["../../src/loaders/XYZLoader.js"],"sourcesContent":["import { BufferGeometry, FileLoader, Float32BufferAttribute, Loader } from 'three'\n\nclass XYZLoader extends Loader {\n  load(url, onLoad, onProgress, onError) {\n    const scope = this\n\n    const loader = new FileLoader(this.manager)\n    loader.setPath(this.path)\n    loader.setRequestHeader(this.requestHeader)\n    loader.setWithCredentials(this.withCredentials)\n    loader.load(\n      url,\n      function (text) {\n        try {\n          onLoad(scope.parse(text))\n        } catch (e) {\n          if (onError) {\n            onError(e)\n          } else {\n            console.error(e)\n          }\n\n          scope.manager.itemError(url)\n        }\n      },\n      onProgress,\n      onError,\n    )\n  }\n\n  parse(text) {\n    const lines = text.split('\\n')\n\n    const vertices = []\n    const colors = []\n\n    for (let line of lines) {\n      line = line.trim()\n\n      if (line.charAt(0) === '#') continue // skip comments\n\n      const lineValues = line.split(/\\s+/)\n\n      if (lineValues.length === 3) {\n        // XYZ\n\n        vertices.push(parseFloat(lineValues[0]))\n        vertices.push(parseFloat(lineValues[1]))\n        vertices.push(parseFloat(lineValues[2]))\n      }\n\n      if (lineValues.length === 6) {\n        // XYZRGB\n\n        vertices.push(parseFloat(lineValues[0]))\n        vertices.push(parseFloat(lineValues[1]))\n        vertices.push(parseFloat(lineValues[2]))\n\n        colors.push(parseFloat(lineValues[3]) / 255)\n        colors.push(parseFloat(lineValues[4]) / 255)\n        colors.push(parseFloat(lineValues[5]) / 255)\n      }\n    }\n\n    const geometry = new BufferGeometry()\n    geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3))\n\n    if (colors.length > 0) {\n      geometry.setAttribute('color', new Float32BufferAttribute(colors, 3))\n    }\n\n    return geometry\n  }\n}\n\nexport { XYZLoader }\n"],"names":["Loader","FileLoader","BufferGeometry","Float32BufferAttribute"],"mappings":";;;AAEA,MAAM,kBAAkBA,MAAAA,OAAO;AAAA,EAC7B,KAAK,KAAK,QAAQ,YAAY,SAAS;AACrC,UAAM,QAAQ;AAEd,UAAM,SAAS,IAAIC,iBAAW,KAAK,OAAO;AAC1C,WAAO,QAAQ,KAAK,IAAI;AACxB,WAAO,iBAAiB,KAAK,aAAa;AAC1C,WAAO,mBAAmB,KAAK,eAAe;AAC9C,WAAO;AAAA,MACL;AAAA,MACA,SAAU,MAAM;AACd,YAAI;AACF,iBAAO,MAAM,MAAM,IAAI,CAAC;AAAA,QACzB,SAAQ,GAAP;AACA,cAAI,SAAS;AACX,oBAAQ,CAAC;AAAA,UACrB,OAAiB;AACL,oBAAQ,MAAM,CAAC;AAAA,UAChB;AAED,gBAAM,QAAQ,UAAU,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAAA,EACF;AAAA,EAED,MAAM,MAAM;AACV,UAAM,QAAQ,KAAK,MAAM,IAAI;AAE7B,UAAM,WAAW,CAAE;AACnB,UAAM,SAAS,CAAE;AAEjB,aAAS,QAAQ,OAAO;AACtB,aAAO,KAAK,KAAM;AAElB,UAAI,KAAK,OAAO,CAAC,MAAM;AAAK;AAE5B,YAAM,aAAa,KAAK,MAAM,KAAK;AAEnC,UAAI,WAAW,WAAW,GAAG;AAG3B,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AACvC,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AACvC,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AAAA,MACxC;AAED,UAAI,WAAW,WAAW,GAAG;AAG3B,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AACvC,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AACvC,iBAAS,KAAK,WAAW,WAAW,CAAC,CAAC,CAAC;AAEvC,eAAO,KAAK,WAAW,WAAW,CAAC,CAAC,IAAI,GAAG;AAC3C,eAAO,KAAK,WAAW,WAAW,CAAC,CAAC,IAAI,GAAG;AAC3C,eAAO,KAAK,WAAW,WAAW,CAAC,CAAC,IAAI,GAAG;AAAA,MAC5C;AAAA,IACF;AAED,UAAM,WAAW,IAAIC,qBAAgB;AACrC,aAAS,aAAa,YAAY,IAAIC,MAAAA,uBAAuB,UAAU,CAAC,CAAC;AAEzE,QAAI,OAAO,SAAS,GAAG;AACrB,eAAS,aAAa,SAAS,IAAIA,MAAAA,uBAAuB,QAAQ,CAAC,CAAC;AAAA,IACrE;AAED,WAAO;AAAA,EACR;AACH;;"}