@anov/3d 0.0.53 → 0.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -144,10 +144,10 @@ var Inspection = /*#__PURE__*/function () {
144
144
  this.gobal.scene.cutoutCamera = minCamera;
145
145
  var scale = (_app$envServer$scaleR = (_window = window) === null || _window === void 0 ? void 0 : (_window$app = _window.app) === null || _window$app === void 0 ? void 0 : (_window$app$envServer = _window$app.envServer) === null || _window$app$envServer === void 0 ? void 0 : _window$app$envServer.scaleRatio) !== null && _app$envServer$scaleR !== void 0 ? _app$envServer$scaleR : 1;
146
146
  this.gobal.scene.cutoutArea = {
147
- x: 40 / scale,
148
- y: 100 / scale,
149
- width: 500 / scale,
150
- height: 200 / scale
147
+ x: 50 * scale,
148
+ y: 100 * scale,
149
+ width: 502 * scale,
150
+ height: 400 * scale
151
151
  };
152
152
  this.gobal.scene.add(minCamera);
153
153
  this.minCamera = minCamera;
@@ -1 +1 @@
1
- {"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","PerspectiveCamera","ShaderMaterial","TubeGeometry","use","utils","RoundLineGeometry","initPostEffects","fragmentShader","vertexShader","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","storeManagement","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","container","get","viewElement","document","createElement","style","position","width","height","cursor","top","offsetTop","left","offsetLeft","addEventListener","toggleView","flyLine","radius","close","groundLine","tube","groundMaterial","transparent","uniforms","u_time","value","alpha","centerColor","sideColor","otherColor","mesh2","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","color","cylinder1","name","set","x","z","anchorObject","minCamera","window","innerWidth","innerHeight","cutoutCamera","scale","app","envServer","scaleRatio","cutoutArea","layers","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","camera","renderer","type","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, PlaneGeometry, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, lib, use, utils } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createBloomSelectedTool, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nconst { storeManagement } = utils\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n groundMaterial\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const container = storeManagement.get<HTMLElement>('container')\n\n const viewElement = document.createElement('div')\n viewElement.style.position = 'absolute'\n viewElement.style.width = '500px'\n viewElement.style.height = '200px'\n viewElement.style.cursor = 'pointer'\n viewElement.style.top = `${container.offsetTop}px`\n viewElement.style.left = `${container.offsetLeft}px`\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const groundMaterial = new ShaderMaterial({\n transparent: true,\n uniforms: {\n u_time: {\n value: 0,\n },\n alpha: {\n value: 0.6,\n },\n centerColor: {\n value: new Color(0xFFFFFF),\n },\n sideColor: {\n value: new Color('#F75332'),\n },\n otherColor: {\n value: new Color('#D23F22'),\n },\n },\n vertexShader,\n fragmentShader,\n })\n const mesh2 = new Mesh(tube, groundMaterial)\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n this.groundMaterial = groundMaterial\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(60,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n\n this.gobal.scene.cutoutArea = { x: 40 / scale, y: 100 / scale, width: 500 / scale, height: 200 / scale }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n if (this.gobal.scene.camera === this.minCamera) {\n this.gobal.scene.camera = this.gobal.scene.cutoutCamera\n this.gobal.scene.cutoutCamera = this.minCamera\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
1
+ {"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","PerspectiveCamera","ShaderMaterial","TubeGeometry","use","utils","RoundLineGeometry","initPostEffects","fragmentShader","vertexShader","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","storeManagement","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","container","get","viewElement","document","createElement","style","position","width","height","cursor","top","offsetTop","left","offsetLeft","addEventListener","toggleView","flyLine","radius","close","groundLine","tube","groundMaterial","transparent","uniforms","u_time","value","alpha","centerColor","sideColor","otherColor","mesh2","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","color","cylinder1","name","set","x","z","anchorObject","minCamera","window","innerWidth","innerHeight","cutoutCamera","scale","app","envServer","scaleRatio","cutoutArea","layers","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","camera","renderer","type","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, PlaneGeometry, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, lib, use, utils } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createBloomSelectedTool, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nconst { storeManagement } = utils\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n groundMaterial\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const container = storeManagement.get<HTMLElement>('container')\n\n const viewElement = document.createElement('div')\n viewElement.style.position = 'absolute'\n viewElement.style.width = '500px'\n viewElement.style.height = '200px'\n viewElement.style.cursor = 'pointer'\n viewElement.style.top = `${container.offsetTop}px`\n viewElement.style.left = `${container.offsetLeft}px`\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const groundMaterial = new ShaderMaterial({\n transparent: true,\n uniforms: {\n u_time: {\n value: 0,\n },\n alpha: {\n value: 0.6,\n },\n centerColor: {\n value: new Color(0xFFFFFF),\n },\n sideColor: {\n value: new Color('#F75332'),\n },\n otherColor: {\n value: new Color('#D23F22'),\n },\n },\n vertexShader,\n fragmentShader,\n })\n const mesh2 = new Mesh(tube, groundMaterial)\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n this.groundMaterial = groundMaterial\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(60,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n\n this.gobal.scene.cutoutArea = { x: 50 * scale, y: 100 * scale, width: 502 * scale, height: 400 * scale }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n if (this.gobal.scene.camera === this.minCamera) {\n this.gobal.scene.camera = this.gobal.scene.cutoutCamera\n this.gobal.scene.cutoutCamera = this.minCamera\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAA0BC,iBAAiB,EAA8CC,cAAc,EAAiBC,YAAY,EAAOC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AAC5O,SAASC,iBAAiB,EAAoEC,eAAe,QAAQ,kBAAkB;AAGvI,OAAOC,cAAc;AACrB,OAAOC,YAAY;AACnB,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,oBAAoB;AAC9D,OAAOC,gBAAgB;AAEvB,IAAQC,eAAe,GAAKT,KAAK,CAAzBS,eAAe;AAAU,IAE3BC,UAAU;EAcd,oBAAYC,KAAgB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,gCAPrB,IAAI;IAAA,sCACsB,IAAIC,GAAG,EAAE;IAAA;IAAA;IAAA;IAAA;IAO1C,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,sBAAsB,EAAE;IAC7B,IAAI,CAACC,cAAc,EAAE;IACrB,IAAI,CAACC,mBAAmB,EAAE;IAE1B,IAAI,CAACC,gBAAgB,GAAG,IAAIR,gBAAgB,CAAC,IAAI,CAAC;IAElD,IAAI,CAACS,eAAe,CAAC,IAAI,CAACC,KAAK,CAAC;IAChC,IAAI,CAACC,IAAI,EAAE;IAEX,IAAMC,SAAS,GAAGX,eAAe,CAACY,GAAG,CAAc,WAAW,CAAC;IAE/D,IAAMC,WAAW,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IACjDF,WAAW,CAACG,KAAK,CAACC,QAAQ,GAAG,UAAU;IACvCJ,WAAW,CAACG,KAAK,CAACE,KAAK,GAAG,OAAO;IACjCL,WAAW,CAACG,KAAK,CAACG,MAAM,GAAG,OAAO;IAClCN,WAAW,CAACG,KAAK,CAACI,MAAM,GAAG,SAAS;IACpCP,WAAW,CAACG,KAAK,CAACK,GAAG,aAAMV,SAAS,CAACW,SAAS,OAAI;IAClDT,WAAW,CAACG,KAAK,CAACO,IAAI,aAAMZ,SAAS,CAACa,UAAU,OAAI;IAEpDX,WAAW,CAACY,gBAAgB,CAAC,OAAO,EAAE,YAAM;MAC1C,KAAI,CAACvB,KAAK,CAACwB,UAAU,EAAE;IACzB,CAAC,CAAC;IAEF,IAAI,CAACb,WAAW,GAAGA,WAAW;EAChC;;EAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,kCAAiC;MAC/B,IAAMc,OAAO,GAAG,IAAInC,iBAAiB,CAACI,aAAa,EAAE;QACnDgC,MAAM,EAAE,EAAE;QACVC,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAI,CAACpB,KAAK,GAAGkB,OAAO,CAAClB,KAAK;IAC5B;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,OAGA,0BAAyB;MACvB,IAAMqB,UAAU,GAAG,IAAItC,iBAAiB,CAACK,gBAAgB,EAAE;QACzD+B,MAAM,EAAE,EAAE;QACVC,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAME,IAAI,GAAG,IAAI1C,YAAY,CAACyC,UAAU,CAACrB,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;MACnE,IAAMuB,cAAc,GAAG,IAAI5C,cAAc,CAAC;QACxC6C,WAAW,EAAE,IAAI;QACjBC,QAAQ,EAAE;UACRC,MAAM,EAAE;YACNC,KAAK,EAAE;UACT,CAAC;UACDC,KAAK,EAAE;YACLD,KAAK,EAAE;UACT,CAAC;UACDE,WAAW,EAAE;YACXF,KAAK,EAAE,IAAItD,KAAK,CAAC,QAAQ;UAC3B,CAAC;UACDyD,SAAS,EAAE;YACTH,KAAK,EAAE,IAAItD,KAAK,CAAC,SAAS;UAC5B,CAAC;UACD0D,UAAU,EAAE;YACVJ,KAAK,EAAE,IAAItD,KAAK,CAAC,SAAS;UAC5B;QACF,CAAC;QACDa,YAAY,EAAZA,YAAY;QACZD,cAAc,EAAdA;MACF,CAAC,CAAC;MACF,IAAM+C,KAAK,GAAG,IAAIxD,IAAI,CAAC8C,IAAI,EAAEC,cAAc,CAAC;MAE5C,IAAMU,WAAW,GAAG,IAAI1D,KAAK,EAAE;MAE/B0D,WAAW,CAACC,GAAG,CAACF,KAAK,CAAC;MACtBC,WAAW,CAACzB,QAAQ,CAAC2B,CAAC,GAAG,CAAC;MAE1B,IAAI,CAACC,WAAW,GAAGf,UAAU,CAACrB,KAAK;MACnC,IAAI,CAACqC,IAAI,GAAGJ,WAAW;MACvB,IAAI,CAACxC,KAAK,CAAC6C,KAAK,CAACJ,GAAG,CAACD,WAAW,CAAC;MACjC,IAAI,CAACV,cAAc,GAAGA,cAAc;MAEpC,IAAI,CAACgB,UAAU,EAAE;IACnB;EAAC;IAAA;IAAA,OAED,sBAAqB;MAAA;MACnB,IAAMC,WAAW,GAAG,IAAIjE,KAAK,EAAE;MAE/BkE,MAAM,CAACC,IAAI,CAACrD,oBAAoB,CAAC,CAACsD,OAAO,CAAC,UAACC,GAAG,EAAK;QACjD,IAAMC,UAAU,GAAG,MAAI,CAACT,WAAW,CAACU,UAAU,CAACC,MAAM,CAACH,GAAG,CAAC,CAAC;QAC3D,IAAMI,iBAAiB,GAAG,IAAIzE,KAAK,EAAE;QAErC,IAAM0E,QAAQ,GAAG,IAAIzE,IAAI,CAAC,IAAIF,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAIG,iBAAiB,CAAC;UAAEyE,KAAK,EAAE,IAAI7E,KAAK,CAAC,SAAS;QAAE,CAAC,CAAC,CAAC;QACtH,IAAM8E,SAAS,GAAG,IAAI3E,IAAI,CAAC,IAAIF,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAIG,iBAAiB,CAAC;UAAEyE,KAAK,EAAE,IAAI7E,KAAK,CAAC,MAAM;QAAE,CAAC,CAAC,CAAC;QAClH8E,SAAS,CAAC3C,QAAQ,CAAC2B,CAAC,GAAG,CAAC;QAExBc,QAAQ,CAACG,IAAI,GAAG,UAAU;QAC1BD,SAAS,CAACC,IAAI,GAAG,WAAW;QAE5BJ,iBAAiB,CAACd,GAAG,CAACe,QAAQ,EAAEE,SAAS,CAAC;QAC1CH,iBAAiB,CAACxC,QAAQ,CAAC6C,GAAG,CAACR,UAAU,CAACS,CAAC,EAAET,UAAU,CAACV,CAAC,GAAG,CAAC,EAAEU,UAAU,CAACU,CAAC,CAAC;QAE5E,MAAI,CAACC,YAAY,CAACH,GAAG,CAAChE,oBAAoB,CAACuD,GAAG,CAAC,CAACQ,IAAI,EAAEJ,iBAAiB,CAAC;QACxER,WAAW,CAACN,GAAG,CAACc,iBAAiB,CAAC;MACpC,CAAC,CAAC;MACF,IAAI,CAACR,WAAW,GAAGA,WAAW;MAC9B,IAAI,CAAC/C,KAAK,CAAC6C,KAAK,CAACJ,GAAG,CAACM,WAAW,CAAC;IACnC;EAAC;IAAA;IAAA,OAED,+BAA8B;MAAA;MAC5B,IAAIiB,SAAS;MAEb,IAAI,IAAI,CAACA,SAAS,EAAE;QAClBA,SAAS,GAAG,IAAI,CAACA,SAAS;MAC5B,CAAC,MACI;QACHA,SAAS,GAAG,IAAI/E,iBAAiB,CAAC,EAAE,EAClCgF,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACE,WAAW,EACpC,GAAG,EAAE,IAAI,CAAC;MAChB;MAEA,IAAI,CAACnE,KAAK,CAAC6C,KAAK,CAACuB,YAAY,GAAGJ,SAAS;MAEzC,IAAMK,KAAK,uCAAIJ,MAAM,2DAAP,QAAiBK,GAAG,yEAApB,YAAsBC,SAAS,0DAA/B,sBAAiCC,UAAU,yEAAI,CAAC;MAE9D,IAAI,CAACxE,KAAK,CAAC6C,KAAK,CAAC4B,UAAU,GAAG;QAAEZ,CAAC,EAAE,EAAE,GAAGQ,KAAK;QAAE3B,CAAC,EAAE,GAAG,GAAG2B,KAAK;QAAErD,KAAK,EAAE,GAAG,GAAGqD,KAAK;QAAEpD,MAAM,EAAE,GAAG,GAAGoD;MAAM,CAAC;MACxG,IAAI,CAACrE,KAAK,CAAC6C,KAAK,CAACJ,GAAG,CAACuB,SAAS,CAAC;MAE/B,IAAI,CAACA,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAACA,SAAS,CAACU,MAAM,CAACd,GAAG,CAAC,CAAC,CAAC;IAC9B;EAAC;IAAA;IAAA,KAED,eAAoB;MAClB,OAAO,IAAI,CAACrD,KAAK,CAACoE,SAAS,EAAE;IAC/B;EAAC;IAAA;IAAA,OAED,yBAAgB/B,IAAI,EAAE;MACpB,IAAI,CAACxC,mBAAmB,EAAE;MAC1B,IAAI,CAACC,gBAAgB,CAACuE,SAAS,CAAChC,IAAI,CAAC;IACvC;EAAC;IAAA;IAAA,OAED,8BAAqBiC,cAAsB,EAAE;MAC3C,IAAMC,cAAc,GAAG,IAAI,CAACvE,KAAK,CAAC8C,UAAU,CAACwB,cAAc,CAAC;MAC5D,IAAI,CAACxE,gBAAgB,CAAC0E,UAAU,CAACD,cAAc,EAAED,cAAc,CAAC;IAClE;EAAC;IAAA;IAAA,OAED,gBAAO;MACL,IAAI,CAACG,MAAM,GAAG,KAAK;MAEnBpE,QAAQ,CAACqE,IAAI,CAACC,WAAW,CAAC,IAAI,CAACvE,WAAW,CAAC;MAC3C,IAAI,CAACX,KAAK,CAAC6C,KAAK,CAACsC,MAAM,GAAG,IAAI;MAC9B,IAAI,CAACpC,WAAW,CAACqC,OAAO,GAAG,IAAI;MAC/B,IAAI,CAACxC,IAAI,CAACwC,OAAO,GAAG,IAAI;MACxB,IAAI,CAAC/E,gBAAgB,CAACgF,KAAK,KAAK,IAAI,CAAChF,gBAAgB,CAACgF,KAAK,CAACD,OAAO,GAAG,IAAI,CAAC;IAC7E;EAAC;IAAA;IAAA,OAED,gBAAO;MAAA;MACL,IAAI,CAACJ,MAAM,GAAG,IAAI;MAElB,IAAI,IAAI,CAACrE,WAAW,IAAIC,QAAQ,CAACqE,IAAI,CAACK,QAAQ,CAAC,IAAI,CAAC3E,WAAW,CAAC,EAC9DC,QAAQ,CAACqE,IAAI,CAACM,WAAW,CAAC,IAAI,CAAC5E,WAAW,CAAC;MAE7C,IAAI,IAAI,CAACX,KAAK,CAAC6C,KAAK,CAAC2C,MAAM,KAAK,IAAI,CAACxB,SAAS,EAAE;QAC9C,IAAI,CAAChE,KAAK,CAAC6C,KAAK,CAAC2C,MAAM,GAAG,IAAI,CAACxF,KAAK,CAAC6C,KAAK,CAACuB,YAAY;QACvD,IAAI,CAACpE,KAAK,CAAC6C,KAAK,CAACuB,YAAY,GAAG,IAAI,CAACJ,SAAS;QAE9CzE,eAAe,CAAC,IAAI,CAACS,KAAK,CAAC6C,KAAK,CAACA,KAAK,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,KAAK,CAAC4C,QAAQ,EAAE,IAAI,CAACzF,KAAK,CAAC6C,KAAK,CAACuB,YAAY,EAAE;UAChGsB,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;MAEA,IAAI,CAAC1F,KAAK,CAAC6C,KAAK,CAACsC,MAAM,GAAG,KAAK;MAC/B,IAAI,CAACnF,KAAK,CAAC6C,KAAK,CAAC8C,OAAO,CAAC,IAAI,CAAC3F,KAAK,CAAC6C,KAAK,CAAC4C,QAAQ,CAAC;MACnD,IAAI,CAAC7C,IAAI,CAACwC,OAAO,GAAG,KAAK;MACzB,IAAI,CAACrC,WAAW,CAACqC,OAAO,GAAG,KAAK;;MAEhC;MACA,IAAMQ,KAAK,GAAGxG,GAAG,CAACyG,QAAQ,CAAC,YAAM;QAC/B,IAAI,MAAI,CAACxF,gBAAgB,CAACgF,KAAK,EAAE;UAC/B,MAAI,CAAChF,gBAAgB,CAACgF,KAAK,CAACD,OAAO,GAAG,KAAK;UAC3CQ,KAAK,EAAE;QACT;MACF,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAe7F,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.53",
3
+ "version": "0.0.55",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",