angular-three-soba 1.3.2 → 1.4.0

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.
Files changed (47) hide show
  1. package/abstractions/README.md +3 -0
  2. package/abstractions/index.d.ts +6 -0
  3. package/abstractions/lib/billboard/billboard.d.ts +14 -0
  4. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +41 -0
  5. package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +12 -0
  6. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +16 -0
  7. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +24 -0
  8. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +14 -0
  9. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +15 -0
  10. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -0
  11. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +21 -0
  12. package/abstractions/lib/text/text.d.ts +21 -0
  13. package/abstractions/lib/text-3d/text-3d.d.ts +39 -0
  14. package/esm2020/abstractions/angular-three-soba-abstractions.mjs +5 -0
  15. package/esm2020/abstractions/index.mjs +7 -0
  16. package/esm2020/abstractions/lib/billboard/billboard.mjs +73 -0
  17. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +206 -0
  18. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  19. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +91 -0
  20. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +182 -0
  21. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +45 -0
  22. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +133 -0
  23. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +193 -0
  24. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +266 -0
  25. package/esm2020/abstractions/lib/text/text.mjs +110 -0
  26. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +144 -0
  27. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +5 -5
  28. package/esm2020/staging/index.mjs +3 -1
  29. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +121 -0
  30. package/esm2020/staging/lib/cloud/cloud.mjs +159 -0
  31. package/fesm2015/angular-three-soba-abstractions.mjs +1431 -0
  32. package/fesm2015/angular-three-soba-abstractions.mjs.map +1 -0
  33. package/fesm2015/angular-three-soba-cameras.mjs +4 -4
  34. package/fesm2015/angular-three-soba-cameras.mjs.map +1 -1
  35. package/fesm2015/angular-three-soba-staging.mjs +274 -4
  36. package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
  37. package/fesm2020/angular-three-soba-abstractions.mjs +1428 -0
  38. package/fesm2020/angular-three-soba-abstractions.mjs.map +1 -0
  39. package/fesm2020/angular-three-soba-cameras.mjs +4 -4
  40. package/fesm2020/angular-three-soba-cameras.mjs.map +1 -1
  41. package/fesm2020/angular-three-soba-staging.mjs +274 -4
  42. package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
  43. package/package.json +11 -3
  44. package/plugin/package.json +1 -1
  45. package/staging/index.d.ts +2 -0
  46. package/staging/lib/camera-shake/camera-shake.d.ts +28 -0
  47. package/staging/lib/cloud/cloud.d.ts +23 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/angular-three-soba/abstractions/src/lib/billboard/billboard.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube/constants.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.ts","../../../../libs/angular-three-soba/abstractions/src/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.ts","../../../../libs/angular-three-soba/abstractions/src/lib/text-3d/text-3d.ts","../../../../libs/angular-three-soba/abstractions/src/lib/text/text.ts","../../../../libs/angular-three-soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtBeforeRenderEvent, NgtRxStore } from 'angular-three';\nimport { Group } from 'three';\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-billboard',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"billboardRef\" (beforeRender)=\"onBeforeRender($any($event))\">\n <ng-content />\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBillboard extends NgtRxStore {\n @Input() billboardRef = injectNgtRef<Group>();\n\n @Input() set follow(follow: boolean) {\n this.set({ follow });\n }\n @Input() set lockX(lockX: boolean) {\n this.set({ lockX });\n }\n @Input() set lockY(lockY: boolean) {\n this.set({ lockY });\n }\n @Input() set lockZ(lockZ: boolean) {\n this.set({ lockZ });\n }\n\n override initialize() {\n super.initialize();\n this.set({ follow: true, lockX: false, lockY: false, lockZ: false });\n }\n\n onBeforeRender(event: NgtBeforeRenderEvent<Group>) {\n const { follow, lockX, lockY, lockZ } = this.get();\n if (!follow) return;\n\n // save prev rotation in case we're locking axises\n const prevRotation = event.object.rotation.clone();\n // always face the camera\n event.object.quaternion.copy(event.state.camera.quaternion);\n // readjust any axis that is locked\n if (lockX) event.object.rotation.x = prevRotation.x;\n if (lockY) event.object.rotation.y = prevRotation.y;\n if (lockZ) event.object.rotation.z = prevRotation.z;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ContentChild,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { selectSlice } from '@rx-angular/state';\nimport { extend, injectNgtRef, NgtPortal, NgtPortalContent, NgtRxStore, NgtStore } from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport { combineLatest, map } from 'rxjs';\nimport { Group, Matrix4, Object3D, OrthographicCamera, Quaternion, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\ntype ControlsProto = { update(): void; target: THREE.Vector3 };\n\nconst isOrbitControls = (controls: ControlsProto): controls is OrbitControls => {\n return 'minPolarAngle' in (controls as OrbitControls);\n};\n\nexport interface NgtsGizmoHelperApi {\n tweenCamera: (direction: Vector3) => void;\n}\n\nexport const NGTS_GIZMO_HELPER_API = new InjectionToken<NgtsGizmoHelperApi>('NgtsGizmoHelper API');\n\nfunction gizmoHelperApiFactory(gizmo: NgtsGizmoHelper) {\n const store = inject(NgtStore);\n\n return {\n tweenCamera: (direction: Vector3) => {\n const { controls, camera, invalidate } = store.get();\n const defaultControls = controls as unknown as ControlsProto;\n\n gizmo.animating = true;\n if (defaultControls) gizmo.focusPoint = defaultControls.target;\n gizmo.radius = camera.position.distanceTo(gizmo.target);\n // rotate from current camera orientation\n gizmo.q1.copy(camera.quaternion);\n // to new current camera orientation\n gizmo.targetPosition.copy(direction).multiplyScalar(gizmo.radius).add(gizmo.target);\n gizmo.dummy.lookAt(gizmo.targetPosition);\n gizmo.q2.copy(gizmo.dummy.quaternion);\n invalidate();\n },\n };\n}\n\nextend({ Group });\n\n@Directive({\n selector: 'ng-template[ngtsGizmoHelperContent]',\n standalone: true,\n})\nexport class NgtsGizmoHelperContent {}\n\n@Component({\n selector: 'ngts-gizmo-helper',\n standalone: true,\n template: `\n <ngt-portal [renderPriority]=\"get('renderPriority')\">\n <ng-template ngtPortalContent>\n <ngts-orthographic-camera\n [cameraRef]=\"virtualCameraRef\"\n [makeDefault]=\"true\"\n [position]=\"[0, 0, 200]\"\n />\n <ngt-group\n [ref]=\"gizmoRef\"\n [position]=\"get('gizmoPosition')\"\n (beforeRender)=\"onBeforeRender($any($event).state.delta)\"\n >\n <ng-container *ngTemplateOutlet=\"gizmoHelperContent\" />\n </ngt-group>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n providers: [{ provide: NGTS_GIZMO_HELPER_API, useFactory: gizmoHelperApiFactory, deps: [NgtsGizmoHelper] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoHelper extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n readonly gizmoRef = injectNgtRef<Group>();\n readonly virtualCameraRef = injectNgtRef<OrthographicCamera>();\n\n animating = false;\n radius = 0;\n focusPoint = new Vector3(0, 0, 0);\n q1 = new Quaternion();\n q2 = new Quaternion();\n\n target = new Vector3();\n targetPosition = new Vector3();\n dummy = new Object3D();\n\n private defaultUp = new Vector3(0, 0, 0);\n private turnRate = 2 * Math.PI; // turn rate in angles per sec\n private matrix = new Matrix4();\n\n @Input() set alignment(\n alignment:\n | 'top-left'\n | 'top-right'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'center-right'\n | 'center-left'\n | 'center-center'\n | 'top-center'\n ) {\n this.set({ alignment });\n }\n\n @Input() set margin(margin: [number, number]) {\n this.set({ margin });\n }\n\n @Input() set renderPriority(renderPriority: number) {\n this.set({ renderPriority });\n }\n\n @Input() set autoClear(autoClear: boolean) {\n this.set({ autoClear });\n }\n\n @Output() updated = new EventEmitter<void>();\n\n @ContentChild(NgtsGizmoHelperContent, { static: true, read: TemplateRef })\n gizmoHelperContent!: TemplateRef<unknown>;\n\n override initialize(): void {\n super.initialize();\n this.set({ alignment: 'bottom-right', margin: [80, 80], renderPriority: 1 });\n }\n\n ngOnInit() {\n this.updateDefaultUp();\n this.setGizmoPosition();\n }\n\n onBeforeRender(delta: number) {\n if (this.virtualCameraRef.nativeElement && this.gizmoRef.nativeElement) {\n const { controls, camera: mainCamera, invalidate } = this.store.get();\n const defaultControls = controls as unknown as ControlsProto;\n // Animate step\n if (this.animating) {\n if (this.q1.angleTo(this.q2) < 0.01) {\n this.animating = false;\n // Orbit controls uses UP vector as the orbit axes,\n // so we need to reset it after the animation is done\n // moving it around for the controls to work correctly\n if (isOrbitControls(defaultControls)) {\n mainCamera.up.copy(this.defaultUp);\n }\n } else {\n const step = delta * this.turnRate;\n // animate position by doing a slerp and then scaling the position on the unit sphere\n this.q1.rotateTowards(this.q2, step);\n // animate orientation\n mainCamera.position\n .set(0, 0, 1)\n .applyQuaternion(this.q1)\n .multiplyScalar(this.radius)\n .add(this.focusPoint);\n mainCamera.up.set(0, 1, 0).applyQuaternion(this.q1).normalize();\n mainCamera.quaternion.copy(this.q1);\n if (this.updated.observed) this.updated.emit();\n else if (defaultControls) {\n defaultControls.update();\n }\n invalidate();\n }\n }\n\n // Sync Gizmo with main camera orientation\n this.matrix.copy(mainCamera.matrix).invert();\n this.gizmoRef.nativeElement.quaternion.setFromRotationMatrix(this.matrix);\n }\n }\n\n private setGizmoPosition() {\n this.connect(\n 'gizmoPosition',\n combineLatest([this.store.select('size'), this.select(selectSlice(['alignment', 'margin']))]).pipe(\n map(([size, { alignment, margin }]) => {\n const [marginX, marginY] = margin;\n const x = alignment.endsWith('-center')\n ? 0\n : alignment.endsWith('-left')\n ? -size.width / 2 + marginX\n : size.width / 2 - marginX;\n const y = alignment.startsWith('center-')\n ? 0\n : alignment.startsWith('top-')\n ? size.height / 2 - marginY\n : -size.height / 2 + marginY;\n return [x, y, 0];\n })\n )\n );\n }\n\n private updateDefaultUp() {\n this.hold(this.store.select('camera'), (camera) => {\n this.defaultUp.copy(camera.up);\n });\n }\n}\n","import * as THREE from 'three';\n\nexport const colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nexport const defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\nconst makePositionVector = (xyz: number[]) => new THREE.Vector3(...xyz).multiplyScalar(0.38);\n\nexport const corners: THREE.Vector3[] = [\n [1, 1, 1],\n [1, 1, -1],\n [1, -1, 1],\n [1, -1, -1],\n [-1, 1, 1],\n [-1, 1, -1],\n [-1, -1, 1],\n [-1, -1, -1],\n].map(makePositionVector);\n\nexport const cornerDimensions = [0.25, 0.25, 0.25] as [number, number, number];\n\nexport const edges: THREE.Vector3[] = [\n [1, 1, 0],\n [1, 0, 1],\n [1, 0, -1],\n [1, -1, 0],\n [0, 1, 1],\n [0, 1, -1],\n [0, -1, 1],\n [0, -1, -1],\n [-1, 1, 0],\n [-1, 0, 1],\n [-1, 0, -1],\n [-1, -1, 0],\n].map(makePositionVector);\n\nexport const edgeDimensions = edges.map(\n (edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as [number, number, number]\n);\n","import { Directive, EventEmitter, inject, Input } from '@angular/core';\nimport { NgtRxStore, NgtStore, NgtThreeEvent } from 'angular-three';\n\n@Directive()\nexport abstract class NgtsGizmoViewcubeInputs extends NgtRxStore {\n protected readonly store = inject(NgtStore);\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set hoverColor(hoverColor: string) {\n this.set({ hoverColor });\n }\n\n @Input() set textColor(textColor: string) {\n this.set({ textColor });\n }\n\n @Input() set strokeColor(strokeColor: string) {\n this.set({ strokeColor });\n }\n\n @Input() set faces(faces: string[]) {\n this.set({ faces });\n }\n\n @Input() set clickEmitter(clickEmitter: EventEmitter<NgtThreeEvent<MouseEvent>>) {\n this.set({ clickEmitter });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { extend, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { BoxGeometry, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { NGTS_GIZMO_HELPER_API } from '../gizmo-helper';\nimport { colors } from './constants';\nimport { NgtsGizmoViewcubeInputs } from './gizmo-viewcube-inputs';\n\nextend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\n@Component({\n selector: 'ngts-gizmo-viewcube-edge-cube[dimensions][position]',\n standalone: true,\n template: `\n <ngt-mesh\n [scale]=\"1.01\"\n [position]=\"get('position')\"\n (pointermove)=\"onPointerMove($any($event))\"\n (pointerout)=\"onPointerOut($any($event))\"\n (click)=\"onClick($any($event))\"\n >\n <ngt-box-geometry *args=\"get('dimensions')\" />\n <ngt-mesh-basic-material\n [color]=\"hover ? get('hoverColor') : 'white'\"\n [transparent]=\"true\"\n [opacity]=\"0.6\"\n [visible]=\"hover\"\n />\n </ngt-mesh>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeEdgeCube extends NgtsGizmoViewcubeInputs {\n readonly gizmoHelperApi = inject(NGTS_GIZMO_HELPER_API);\n\n hover = false;\n\n @Input() set dimensions(dimensions: [number, number, number]) {\n this.set({ dimensions });\n }\n\n @Input() set position(position: Vector3) {\n this.set({ position });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ hoverColor: colors.hover });\n }\n\n onPointerMove(event: NgtThreeEvent<PointerEvent>) {\n event.stopPropagation();\n this.hover = true;\n }\n\n onPointerOut(event: NgtThreeEvent<PointerEvent>) {\n event.stopPropagation();\n this.hover = false;\n }\n\n onClick(event: NgtThreeEvent<MouseEvent>) {\n if (this.get('clickEmitter')?.observed) {\n this.get('clickEmitter').emit(event);\n } else {\n event.stopPropagation();\n this.gizmoHelperApi.tweenCamera(this.get('position'));\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { extend, NgtRepeat, NgtThreeEvent } from 'angular-three';\nimport { BoxGeometry, CanvasTexture, Mesh, MeshLambertMaterial } from 'three';\nimport { NGTS_GIZMO_HELPER_API } from '../gizmo-helper';\nimport { colors, defaultFaces } from './constants';\nimport { NgtsGizmoViewcubeInputs } from './gizmo-viewcube-inputs';\n\nextend({ MeshLambertMaterial, Mesh, BoxGeometry });\n\n@Component({\n selector: 'ngts-gizmo-viewcube-face-material[hover][index]',\n standalone: true,\n template: `\n <ngt-mesh-lambert-material\n [attach]=\"['material', get('index')]\"\n [map]=\"get('texture')\"\n [color]=\"get('hover') ? get('hoverColor') : get('color')\"\n [opacity]=\"get('opacity')\"\n [transparent]=\"true\"\n >\n <ngt-value [rawValue]=\"store.get('gl').outputEncoding\" attach=\"map.encoding\" />\n <ngt-value [rawValue]=\"store.get('gl').capabilities.getMaxAnisotropy() || 1\" attach=\"map.anisotrophy\" />\n </ngt-mesh-lambert-material>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeFaceMaterial extends NgtsGizmoViewcubeInputs {\n private readonly document = inject(DOCUMENT);\n\n @Input() set index(index: number) {\n this.set({ index });\n }\n\n @Input() set hover(hover: boolean) {\n this.set({ hover });\n }\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n font: '20px Inter var, Arial, sans-serif',\n faces: defaultFaces,\n color: colors.bg,\n hoverColor: colors.hover,\n textColor: colors.text,\n strokeColor: colors.stroke,\n opacity: 1,\n });\n this.connect(\n 'texture',\n this.select(\n ['index', 'faces', 'color', 'font', 'textColor', 'strokeColor'],\n ({ index, faces, color, font, textColor, strokeColor }) => {\n const canvas = this.document.createElement('canvas');\n canvas.width = 128;\n canvas.height = 128;\n const context = canvas.getContext('2d')!;\n context.fillStyle = color;\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.strokeStyle = strokeColor;\n context.strokeRect(0, 0, canvas.width, canvas.height);\n context.font = font;\n context.textAlign = 'center';\n context.fillStyle = textColor;\n context.fillText(faces[index].toUpperCase(), 64, 76);\n return new CanvasTexture(canvas);\n }\n )\n );\n }\n}\n\n@Component({\n selector: 'ngts-gizmo-viewcube-face-cube',\n standalone: true,\n template: `\n <ngt-mesh\n (pointermove)=\"onPointerMove($any($event))\"\n (pointerout)=\"onPointerOut($any($event))\"\n (click)=\"onClick($any($event))\"\n >\n <ngt-box-geometry />\n <ngts-gizmo-viewcube-face-material\n *ngFor=\"let i; repeat: 6\"\n [hover]=\"hover === i\"\n [index]=\"i\"\n [font]=\"get('font')\"\n [color]=\"get('color')\"\n [opacity]=\"get('opacity')\"\n [hoverColor]=\"get('hoverColor')\"\n [textColor]=\"get('textColor')\"\n [strokeColor]=\"get('strokeColor')\"\n [faces]=\"get('faces')\"\n />\n </ngt-mesh>\n `,\n imports: [NgtsGizmoViewcubeFaceMaterial, NgtRepeat],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeFaceCube extends NgtsGizmoViewcubeInputs {\n readonly gizmoHelperApi = inject(NGTS_GIZMO_HELPER_API);\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n hover = -1;\n\n onPointerMove(event: NgtThreeEvent<PointerEvent>) {\n event.stopPropagation();\n this.hover = Math.floor(event.faceIndex! / 2);\n }\n\n onPointerOut(event: NgtThreeEvent<PointerEvent>) {\n event.stopPropagation();\n this.hover = -1;\n }\n\n onClick(event: NgtThreeEvent<MouseEvent>) {\n if (this.get('clickEmitter')?.observed) {\n this.get('clickEmitter').emit(event);\n } else {\n event.stopPropagation();\n this.gizmoHelperApi.tweenCamera(event.face!.normal);\n }\n }\n}\n","import { NgFor } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from '@angular/core';\nimport { extend, NgtThreeEvent } from 'angular-three';\nimport { AmbientLight, Group, PointLight } from 'three';\nimport { cornerDimensions, corners, edgeDimensions, edges } from './constants';\nimport { NgtsGizmoViewcubeEdgeCube } from './gizmo-viewcube-edge';\nimport { NgtsGizmoViewcubeFaceCube } from './gizmo-viewcube-face';\nimport { NgtsGizmoViewcubeInputs } from './gizmo-viewcube-inputs';\n\nextend({ Group, AmbientLight, PointLight });\n\n@Component({\n selector: 'ngts-gizmo-viewcube',\n standalone: true,\n template: `\n <ngt-group [scale]=\"60\">\n <ngts-gizmo-viewcube-face-cube\n [font]=\"get('font')\"\n [color]=\"get('color')\"\n [opacity]=\"get('opacity')\"\n [hoverColor]=\"get('hoverColor')\"\n [textColor]=\"get('textColor')\"\n [strokeColor]=\"get('strokeColor')\"\n [faces]=\"get('faces')\"\n [clickEmitter]=\"clicked\"\n />\n\n <ngts-gizmo-viewcube-edge-cube\n *ngFor=\"let edge of edges; let i = index\"\n [position]=\"edge\"\n [dimensions]=\"edgeDimensions[i]\"\n [font]=\"get('font')\"\n [color]=\"get('color')\"\n [opacity]=\"get('opacity')\"\n [hoverColor]=\"get('hoverColor')\"\n [textColor]=\"get('textColor')\"\n [strokeColor]=\"get('strokeColor')\"\n [faces]=\"get('faces')\"\n [clickEmitter]=\"clicked\"\n />\n\n <ngts-gizmo-viewcube-edge-cube\n *ngFor=\"let corner of corners\"\n [position]=\"corner\"\n [dimensions]=\"cornerDimensions\"\n [font]=\"get('font')\"\n [color]=\"get('color')\"\n [opacity]=\"get('opacity')\"\n [hoverColor]=\"get('hoverColor')\"\n [textColor]=\"get('textColor')\"\n [strokeColor]=\"get('strokeColor')\"\n [faces]=\"get('faces')\"\n [clickEmitter]=\"clicked\"\n />\n\n <ngt-ambient-light [intensity]=\"0.5\" />\n <ngt-point-light [position]=\"10\" [intensity]=\"0.5\" />\n </ngt-group>\n `,\n imports: [NgtsGizmoViewcubeEdgeCube, NgtsGizmoViewcubeFaceCube, NgFor],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcube extends NgtsGizmoViewcubeInputs {\n readonly edges = edges;\n readonly edgeDimensions = edgeDimensions;\n\n readonly corners = corners;\n readonly cornerDimensions = cornerDimensions;\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n @Output() clicked = new EventEmitter<NgtThreeEvent<MouseEvent>>();\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input } from '@angular/core';\nimport { extend, NgtArgs, NgtRxStore, NgtStore, NgtThreeEvent, startWithUndefined } from 'angular-three';\nimport { combineLatest, map } from 'rxjs';\nimport { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Sprite, SpriteMaterial } from 'three';\n\nextend({ Group, Mesh, BoxGeometry, MeshBasicMaterial, Sprite, SpriteMaterial });\n\n@Component({\n selector: 'ngts-gizmo-viewport-axis[color][rotation]',\n standalone: true,\n template: `\n <ngt-group [rotation]=\"get('rotation')\">\n <ngt-mesh [position]=\"[0.4, 0, 0]\">\n <ngt-box-geometry *args=\"get('scale')\" />\n <ngt-mesh-basic-material [color]=\"get('color')\" [toneMapped]=\"false\" />\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewportAxis extends NgtRxStore {\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n @Input() set rotation(rotation: [number, number, number]) {\n this.set({ rotation });\n }\n\n @Input() set scale(scale: [number, number, number]) {\n this.set({ scale: scale === undefined ? this.get('scale') : scale });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ scale: [0.8, 0.05, 0.05] });\n }\n}\n\n@Component({\n selector: 'ngts-gizmo-viewport-axis-head',\n standalone: true,\n template: `\n <ngt-sprite\n ngtCompound\n [scale]=\"get('scale')\"\n (pointerover)=\"onPointerOver($any($event))\"\n (pointerout)=\"onPointerOut($any($event))\"\n >\n <ngt-sprite-material\n [map]=\"get('texture')\"\n [opacity]=\"get('label') ? 1 : 0.75\"\n [alphaTest]=\"0.3\"\n [toneMapped]=\"false\"\n >\n <ngt-value [rawValue]=\"gl.outputEncoding\" attach=\"map.encoding\" />\n <ngt-value [rawValue]=\"gl.capabilities.getMaxAnisotropy() || 1\" attach=\"map.anisotropy\" />\n </ngt-sprite-material>\n </ngt-sprite>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewportAxisHead extends NgtRxStore {\n private readonly document = inject(DOCUMENT);\n private readonly store = inject(NgtStore);\n readonly gl = this.store.get('gl');\n\n @Input() set arcStyle(arcStyle: string) {\n this.set({ arcStyle });\n }\n\n @Input() set label(label: string) {\n this.set({ label });\n }\n\n @Input() set labelColor(labelColor: string) {\n this.set({ labelColor });\n }\n\n @Input() set axisHeadScale(axisHeadScale: number) {\n this.set({ axisHeadScale });\n }\n\n @Input() set disabled(disabled: boolean) {\n this.set({ disabled });\n }\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Input() set clickEmitter(clickEmitter: EventEmitter<NgtThreeEvent<MouseEvent>>) {\n this.set({ clickEmitter });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ axisHeadScale: 1, active: false });\n this.connect(\n 'texture',\n combineLatest([\n this.select('arcStyle'),\n this.select('labelColor'),\n this.select('font'),\n this.select('label').pipe(startWithUndefined()),\n ]).pipe(\n map(([arcStyle, labelColor, font, label]) => {\n const canvas = this.document.createElement('canvas');\n canvas.width = 64;\n canvas.height = 64;\n\n const context = canvas.getContext('2d')!;\n context.beginPath();\n context.arc(32, 32, 16, 0, 2 * Math.PI);\n context.closePath();\n context.fillStyle = arcStyle;\n context.fill();\n\n if (label) {\n context.font = font;\n context.textAlign = 'center';\n context.fillStyle = labelColor;\n context.fillText(label, 32, 41);\n }\n return new CanvasTexture(canvas);\n })\n )\n );\n this.connect(\n 'scale',\n combineLatest([\n this.select('active'),\n this.select('axisHeadScale'),\n this.select('label').pipe(startWithUndefined()),\n ]).pipe(map(([active, axisHeadScale, label]) => (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale))\n );\n }\n\n onPointerOver(event: NgtThreeEvent<PointerEvent>) {\n if (!this.get('disabled')) {\n event.stopPropagation();\n this.set({ active: true });\n }\n }\n\n onPointerOut(event: NgtThreeEvent<PointerEvent>) {\n if (!this.get('disabled')) {\n if (this.get('clickEmitter')?.observed) {\n this.get('clickEmitter').emit(event);\n } else {\n event.stopPropagation();\n this.set({ active: false });\n }\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { extend, NgtRxStore, NgtThreeEvent } from 'angular-three';\nimport { AmbientLight, Group, PointLight } from 'three';\nimport { NGTS_GIZMO_HELPER_API } from '../gizmo-helper';\nimport { NgtsGizmoViewportAxis, NgtsGizmoViewportAxisHead } from './gizmo-viewport-axis';\n\nextend({ Group, AmbientLight, PointLight });\n\n@Component({\n selector: 'ngts-gizmo-viewport',\n standalone: true,\n template: `\n <ngt-group ngtCompound [scale]=\"40\">\n <ngts-gizmo-viewport-axis\n [color]=\"get('axisColors')[0]\"\n [rotation]=\"[0, 0, 0]\"\n [scale]=\"get('axisScale')\"\n ></ngts-gizmo-viewport-axis>\n <ngts-gizmo-viewport-axis\n [color]=\"get('axisColors')[1]\"\n [rotation]=\"[0, 0, Math.PI / 2]\"\n [scale]=\"get('axisScale')\"\n ></ngts-gizmo-viewport-axis>\n <ngts-gizmo-viewport-axis\n [color]=\"get('axisColors')[2]\"\n [rotation]=\"[0, -Math.PI / 2, 0]\"\n [scale]=\"get('axisScale')\"\n ></ngts-gizmo-viewport-axis>\n <ng-container *ngIf=\"!get('hideAxisHeads')\">\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[0]\"\n [position]=\"[1, 0, 0]\"\n [label]=\"get('labels')[0]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[1]\"\n [position]=\"[0, 1, 0]\"\n [label]=\"get('labels')[1]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[2]\"\n [position]=\"[0, 0, 1]\"\n [label]=\"get('labels')[2]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n <ng-container *ngIf=\"!get('hideNegativeAxes')\">\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[0]\"\n [position]=\"[-1, 0, 0]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[1]\"\n [position]=\"[0, -1, 0]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n <ngts-gizmo-viewport-axis-head\n [arcStyle]=\"get('axisColors')[2]\"\n [position]=\"[0, 0, -1]\"\n [font]=\"get('font')\"\n [disabled]=\"get('disabled')\"\n [labelColor]=\"get('labelColor')\"\n [clickEmitter]=\"clicked\"\n [axisHeadScale]=\"get('axisHeadScale')\"\n (pointerdown)=\"onPointerDown($any($event))\"\n ></ngts-gizmo-viewport-axis-head>\n </ng-container>\n </ng-container>\n <ngt-ambient-light intensity=\"0.5\"></ngt-ambient-light>\n <ngt-point-light position=\"10\" intensity=\"0.5\"></ngt-point-light>\n </ngt-group>\n `,\n imports: [NgtsGizmoViewportAxis, NgtsGizmoViewportAxisHead, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewport extends NgtRxStore {\n readonly gizmoHelperApi = inject(NGTS_GIZMO_HELPER_API);\n\n readonly Math = Math;\n\n @Input() set axisColors(axisColors: [string, string, string]) {\n this.set({ axisColors });\n }\n\n @Input() set axisScale(axisScale: [number, number, number]) {\n this.set({ axisScale });\n }\n\n @Input() set labels(labels: [string, string, string]) {\n this.set({ labels });\n }\n\n @Input() set axisHeadScale(axisHeadScale: number) {\n this.set({ axisHeadScale });\n }\n\n @Input() set labelColor(labelColor: string) {\n this.set({ labelColor });\n }\n\n @Input() set hideNegativeAxes(hideNegativeAxes: boolean) {\n this.set({ hideNegativeAxes });\n }\n\n @Input() set hideAxisHeads(hideAxisHeads: boolean) {\n this.set({ hideAxisHeads });\n }\n\n @Input() set disabled(disabled: boolean) {\n this.set({ disabled });\n }\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Output() clicked = new EventEmitter<NgtThreeEvent<MouseEvent>>();\n\n override initialize(): void {\n super.initialize();\n this.set({\n font: '18px Inter var, Arial, sans-serif',\n axisColors: ['#ff2060', '#20df80', '#2080ff'],\n axisHeadScale: 1,\n labels: ['X', 'Y', 'Z'],\n labelColor: '#000',\n });\n }\n\n onPointerDown(event: NgtThreeEvent<PointerEvent>) {\n if (!this.get('disabled')) {\n event.stopPropagation();\n this.gizmoHelperApi.tweenCamera(event.object.position);\n }\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, NgtArgs, NgtPush, NgtRxStore } from 'angular-three';\nimport { combineLatest, map, of, switchMap } from 'rxjs';\nimport { Mesh } from 'three';\nimport { FontLoader, TextGeometry } from 'three-stdlib';\n\ndeclare type Glyph = {\n _cachedOutline: string[];\n ha: number;\n o: string;\n};\n\ndeclare type FontData = {\n boundingBox: {\n yMax: number;\n yMin: number;\n };\n familyName: string;\n glyphs: {\n [k: string]: Glyph;\n };\n resolution: number;\n underlineThickness: number;\n};\n\nextend({ Mesh, TextGeometry });\n\n@Component({\n selector: 'ngts-text-3d[font]',\n standalone: true,\n template: `\n <ngt-mesh ngtCompound>\n <ngt-text-geometry *args=\"geometryArgs$ | ngtPush : null\" />\n <ng-content />\n </ngt-mesh>\n `,\n imports: [NgtArgs, NgtPush],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsText3D extends NgtRxStore {\n @Input() set font(font: FontData | string) {\n this.set({ font });\n }\n\n @Input() set text(text: string) {\n this.set({ text });\n }\n\n @Input() set bevelEnabled(bevelEnabled: boolean) {\n this.set({ bevelEnabled });\n }\n\n @Input() set bevelOffset(bevelOffset: number) {\n this.set({ bevelOffset });\n }\n\n @Input() set bevelSize(bevelSize: number) {\n this.set({ bevelSize });\n }\n\n @Input() set bevelThickness(bevelThickness: number) {\n this.set({ bevelThickness });\n }\n\n @Input() set curveSegments(curveSegments: number) {\n this.set({ curveSegments });\n }\n\n @Input() set bevelSegments(bevelSegments: number) {\n this.set({ bevelSegments });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n @Input() set lineHeight(lineHeight: number) {\n this.set({ lineHeight });\n }\n\n @Input() set letterSpacing(letterSpacing: number) {\n this.set({ letterSpacing });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n letterSpacing: 0,\n lineHeight: 1,\n size: 1,\n height: 0.2,\n bevelThickness: 0.1,\n bevelSize: 0.01,\n bevelEnabled: false,\n bevelOffset: 0,\n bevelSegments: 4,\n curveSegments: 8,\n });\n }\n\n private readonly font$ = this.select('font').pipe(\n switchMap((font) => {\n if (typeof font === 'string') return fetch(font).then((res) => res.json()) as Promise<FontData>;\n return of(font as FontData);\n }),\n map((fontData) => new FontLoader().parse(fontData))\n );\n\n readonly geometryArgs$ = combineLatest([\n this.font$,\n this.select('text'),\n this.select('size'),\n this.select('height'),\n this.select('bevelThickness'),\n this.select('bevelSize'),\n this.select('bevelEnabled'),\n this.select('bevelSegments'),\n this.select('bevelOffset'),\n this.select('curveSegments'),\n this.select('letterSpacing'),\n this.select('lineHeight'),\n ]).pipe(\n map(\n ([\n font,\n text,\n size,\n height,\n bevelThickness,\n bevelSize,\n bevelEnabled,\n bevelSegments,\n bevelOffset,\n curveSegments,\n letterSpacing,\n lineHeight,\n ]) => [\n text,\n {\n font,\n size,\n height,\n bevelThickness,\n bevelSize,\n bevelSegments,\n bevelEnabled,\n bevelOffset,\n curveSegments,\n letterSpacing,\n lineHeight,\n },\n ]\n )\n );\n}\n","import {\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { RxActionFactory } from '@rx-angular/state/actions';\nimport { injectNgtRef, NgtArgs, NgtRxStore, NgtStore } from 'angular-three';\n// @ts-ignore\nimport { preloadFont, Text } from 'troika-three-text';\n\n@Component({\n selector: 'ngts-text[text]',\n standalone: true,\n template: `\n <ngt-primitive\n ngtCompound\n *args=\"[textRef.nativeElement]\"\n [text]=\"get('text')\"\n [anchorX]=\"get('anchorX')\"\n [anchorY]=\"get('anchorY')\"\n [font]=\"get('font')\"\n >\n <ng-content />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n providers: [RxActionFactory],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsText extends NgtRxStore implements OnInit, OnDestroy {\n @Input() textRef = injectNgtRef<Text>();\n\n @Input() set text(text: string) {\n this.set({ text });\n }\n\n @Input() set characters(characters: string) {\n this.set({ characters });\n }\n\n @Input() set font(font: string) {\n this.set({ font });\n }\n\n @Input() set anchorX(anchorX: number | 'left' | 'center' | 'right') {\n this.set({ anchorX });\n }\n\n @Input() set anchorY(anchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom') {\n this.set({ anchorY });\n }\n\n @Output() sync = new EventEmitter<Text>();\n\n override initialize(): void {\n super.initialize();\n this.set({ anchorX: 'center', anchorY: 'middle', text: '' });\n }\n\n private readonly store = inject(NgtStore);\n private readonly troikaText = new Text();\n\n ngOnInit(): void {\n if (!this.textRef.nativeElement) this.textRef.nativeElement = this.troikaText;\n this.preloadFont();\n this.syncText();\n }\n\n override ngOnDestroy(): void {\n this.troikaText.dispose();\n super.ngOnDestroy();\n }\n\n private preloadFont() {\n const { font, characters } = this.get();\n if (font && characters) {\n preloadFont({ font, characters });\n }\n }\n\n private syncText() {\n this.hold(this.select(), () => {\n const invalidate = this.store.get('invalidate');\n this.troikaText.sync(() => {\n invalidate();\n if (this.sync.observed) this.sync.next(this.troikaText);\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -97,10 +97,10 @@ extend({ OrthographicCamera, Group });
97
97
  class NgtsOrthographicCamera extends NgtsCamera {
98
98
  constructor() {
99
99
  super(...arguments);
100
- this.left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(map(([left, size]) => left !== null && left !== void 0 ? left : size.width / -2));
101
- this.right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(map(([right, size]) => right !== null && right !== void 0 ? right : size.width / 2));
102
- this.top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(map(([top, size]) => top !== null && top !== void 0 ? top : size.height / 2));
103
- this.bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(map(([bottom, size]) => bottom !== null && bottom !== void 0 ? bottom : size.height / -2));
100
+ this.left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(map(([left, size]) => left || size.width / -2));
101
+ this.right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(map(([right, size]) => right || size.width / 2));
102
+ this.top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(map(([top, size]) => top || size.height / 2));
103
+ this.bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(map(([bottom, size]) => bottom || size.height / -2));
104
104
  }
105
105
  set left(left) {
106
106
  this.set({ left });
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/angular-three-soba/cameras/src/lib/camera/camera-content.ts","../../../../libs/angular-three-soba/cameras/src/lib/camera/camera.ts","../../../../libs/angular-three-soba/cameras/src/lib/orthographic-camera/orthographic-camera.ts","../../../../libs/angular-three-soba/cameras/src/lib/perspective-camera/perspective-camera.ts","../../../../libs/angular-three-soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, inject, Input, TemplateRef } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[ngtsCameraContent]', standalone: true })\nexport class NgtsCameraContent {\n readonly template = inject(TemplateRef);\n @Input() ngtsCameraContent: boolean | '' = '';\n\n static ngTemplateContextGuard(\n _: NgtsCameraContent,\n ctx: unknown\n ): ctx is { target: THREE.WebGLRenderTarget; group?: THREE.Group } {\n return true;\n }\n}\n","import { Directive, inject, Input, OnInit } from '@angular/core';\nimport { injectNgtRef, NgtCamera, NgtRxStore, NgtStore } from 'angular-three';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { combineLatest, map } from 'rxjs';\n\n@Directive()\nexport abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtRxStore implements OnInit {\n @Input() set makeDefault(makeDefault: boolean) {\n this.set({ makeDefault });\n }\n\n @Input() set manual(manual: boolean) {\n this.set({ manual });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set envMap(envMap: THREE.Texture) {\n this.set({ envMap });\n }\n\n @Input() cameraRef = injectNgtRef<TCamera>();\n\n protected readonly store = inject(NgtStore);\n readonly fboRef = injectNgtsFBO(() => this.select('resolution').pipe(map((resolution) => ({ width: resolution }))));\n\n override initialize() {\n super.initialize();\n this.set({ resolution: 256, frames: Infinity, makeDefault: false, manual: false });\n }\n\n ngOnInit() {\n this.hold(this.cameraRef.$, (camera) => {\n camera.updateProjectionMatrix();\n this.setDefaultCamera();\n this.updateProjectionMatrix();\n });\n }\n\n private setDefaultCamera() {\n this.effect(combineLatest([this.cameraRef.$, this.select('makeDefault')]), ([camera, makeDefault]) => {\n if (makeDefault) {\n const { camera: oldCamera } = this.store.get();\n this.store.set({ camera });\n return () => {\n this.store.set({ camera: oldCamera });\n };\n }\n });\n }\n\n private updateProjectionMatrix() {\n this.effect(combineLatest([this.cameraRef.$, this.select('manual')]), ([camera, manual]) => {\n if (!manual && camera) camera.updateProjectionMatrix();\n });\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, NgtPush } from 'angular-three';\nimport { combineLatest, map } from 'rxjs';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCamera } from '../camera/camera';\nimport { NgtsCameraContent } from '../camera/camera-content';\n\nextend({ OrthographicCamera, Group });\n\n@Component({\n selector: 'ngts-orthographic-camera',\n standalone: true,\n template: `\n <ngt-orthographic-camera\n ngtCompound\n [ref]=\"cameraRef\"\n [left]=\"left$ | ngtPush\"\n [right]=\"right$ | ngtPush\"\n [top]=\"top$ | ngtPush\"\n [bottom]=\"bottom$ | ngtPush\"\n >\n <ng-container\n *ngIf=\"cameraContent && !cameraContent.ngtsCameraContent\"\n [ngTemplateOutlet]=\"cameraContent.template\"\n />\n </ngt-orthographic-camera>\n <ngt-group #group *ngIf=\"cameraContent && cameraContent.ngtsCameraContent\">\n <ng-container *ngTemplateOutlet=\"cameraContent.template; context: { fbo: fboRef.nativeElement, group }\" />\n </ngt-group>\n `,\n imports: [NgIf, NgTemplateOutlet, NgtPush],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera extends NgtsCamera<THREE.OrthographicCamera> {\n @ContentChild(NgtsCameraContent) cameraContent?: NgtsCameraContent;\n\n @Input() set left(left: number) {\n this.set({ left });\n }\n\n @Input() set right(right: number) {\n this.set({ right });\n }\n\n @Input() set top(top: number) {\n this.set({ top });\n }\n\n @Input() set bottom(bottom: number) {\n this.set({ bottom });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ left: 0, right: 0, top: 0, bottom: 0 });\n }\n\n readonly left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(\n map(([left, size]) => left ?? size.width / -2)\n );\n\n readonly right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(\n map(([right, size]) => right ?? size.width / 2)\n );\n\n readonly top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(\n map(([top, size]) => top ?? size.height / 2)\n );\n\n readonly bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(\n map(([bottom, size]) => bottom ?? size.height / -2)\n );\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { extend } from 'angular-three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCamera } from '../camera/camera';\nimport { NgtsCameraContent } from '../camera/camera-content';\n\nextend({ PerspectiveCamera, Group });\n\n@Component({\n selector: 'ngts-perspective-camera',\n standalone: true,\n template: `\n <ngt-perspective-camera [ref]=\"cameraRef\" ngtCompound>\n <ng-container\n *ngIf=\"cameraContent && !cameraContent.ngtsCameraContent\"\n [ngTemplateOutlet]=\"cameraContent.template\"\n />\n </ngt-perspective-camera>\n <ngt-group #group *ngIf=\"cameraContent && cameraContent.ngtsCameraContent\">\n <ng-container *ngTemplateOutlet=\"cameraContent.template; context: { fbo: fboRef.nativeElement, group }\" />\n </ngt-group>\n `,\n imports: [NgIf, NgTemplateOutlet],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera extends NgtsCamera<PerspectiveCamera> {\n @ContentChild(NgtsCameraContent) cameraContent?: NgtsCameraContent;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/angular-three-soba/cameras/src/lib/camera/camera-content.ts","../../../../libs/angular-three-soba/cameras/src/lib/camera/camera.ts","../../../../libs/angular-three-soba/cameras/src/lib/orthographic-camera/orthographic-camera.ts","../../../../libs/angular-three-soba/cameras/src/lib/perspective-camera/perspective-camera.ts","../../../../libs/angular-three-soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, inject, Input, TemplateRef } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[ngtsCameraContent]', standalone: true })\nexport class NgtsCameraContent {\n readonly template = inject(TemplateRef);\n @Input() ngtsCameraContent: boolean | '' = '';\n\n static ngTemplateContextGuard(\n _: NgtsCameraContent,\n ctx: unknown\n ): ctx is { target: THREE.WebGLRenderTarget; group?: THREE.Group } {\n return true;\n }\n}\n","import { Directive, inject, Input, OnInit } from '@angular/core';\nimport { injectNgtRef, NgtCamera, NgtRxStore, NgtStore } from 'angular-three';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { combineLatest, map } from 'rxjs';\n\n@Directive()\nexport abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtRxStore implements OnInit {\n @Input() set makeDefault(makeDefault: boolean) {\n this.set({ makeDefault });\n }\n\n @Input() set manual(manual: boolean) {\n this.set({ manual });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set envMap(envMap: THREE.Texture) {\n this.set({ envMap });\n }\n\n @Input() cameraRef = injectNgtRef<TCamera>();\n\n protected readonly store = inject(NgtStore);\n readonly fboRef = injectNgtsFBO(() => this.select('resolution').pipe(map((resolution) => ({ width: resolution }))));\n\n override initialize() {\n super.initialize();\n this.set({ resolution: 256, frames: Infinity, makeDefault: false, manual: false });\n }\n\n ngOnInit() {\n this.hold(this.cameraRef.$, (camera) => {\n camera.updateProjectionMatrix();\n this.setDefaultCamera();\n this.updateProjectionMatrix();\n });\n }\n\n private setDefaultCamera() {\n this.effect(combineLatest([this.cameraRef.$, this.select('makeDefault')]), ([camera, makeDefault]) => {\n if (makeDefault) {\n const { camera: oldCamera } = this.store.get();\n this.store.set({ camera });\n return () => {\n this.store.set({ camera: oldCamera });\n };\n }\n });\n }\n\n private updateProjectionMatrix() {\n this.effect(combineLatest([this.cameraRef.$, this.select('manual')]), ([camera, manual]) => {\n if (!manual && camera) camera.updateProjectionMatrix();\n });\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, NgtPush } from 'angular-three';\nimport { combineLatest, map } from 'rxjs';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCamera } from '../camera/camera';\nimport { NgtsCameraContent } from '../camera/camera-content';\n\nextend({ OrthographicCamera, Group });\n\n@Component({\n selector: 'ngts-orthographic-camera',\n standalone: true,\n template: `\n <ngt-orthographic-camera\n ngtCompound\n [ref]=\"cameraRef\"\n [left]=\"left$ | ngtPush\"\n [right]=\"right$ | ngtPush\"\n [top]=\"top$ | ngtPush\"\n [bottom]=\"bottom$ | ngtPush\"\n >\n <ng-container\n *ngIf=\"cameraContent && !cameraContent.ngtsCameraContent\"\n [ngTemplateOutlet]=\"cameraContent.template\"\n />\n </ngt-orthographic-camera>\n <ngt-group #group *ngIf=\"cameraContent && cameraContent.ngtsCameraContent\">\n <ng-container *ngTemplateOutlet=\"cameraContent.template; context: { fbo: fboRef.nativeElement, group }\" />\n </ngt-group>\n `,\n imports: [NgIf, NgTemplateOutlet, NgtPush],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera extends NgtsCamera<THREE.OrthographicCamera> {\n @ContentChild(NgtsCameraContent) cameraContent?: NgtsCameraContent;\n\n @Input() set left(left: number) {\n this.set({ left });\n }\n\n @Input() set right(right: number) {\n this.set({ right });\n }\n\n @Input() set top(top: number) {\n this.set({ top });\n }\n\n @Input() set bottom(bottom: number) {\n this.set({ bottom });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ left: 0, right: 0, top: 0, bottom: 0 });\n }\n\n readonly left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(\n map(([left, size]) => left || size.width / -2)\n );\n\n readonly right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(\n map(([right, size]) => right || size.width / 2)\n );\n\n readonly top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(\n map(([top, size]) => top || size.height / 2)\n );\n\n readonly bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(\n map(([bottom, size]) => bottom || size.height / -2)\n );\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { extend } from 'angular-three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCamera } from '../camera/camera';\nimport { NgtsCameraContent } from '../camera/camera-content';\n\nextend({ PerspectiveCamera, Group });\n\n@Component({\n selector: 'ngts-perspective-camera',\n standalone: true,\n template: `\n <ngt-perspective-camera [ref]=\"cameraRef\" ngtCompound>\n <ng-container\n *ngIf=\"cameraContent && !cameraContent.ngtsCameraContent\"\n [ngTemplateOutlet]=\"cameraContent.template\"\n />\n </ngt-perspective-camera>\n <ngt-group #group *ngIf=\"cameraContent && cameraContent.ngtsCameraContent\">\n <ng-container *ngTemplateOutlet=\"cameraContent.template; context: { fbo: fboRef.nativeElement, group }\" />\n </ngt-group>\n `,\n imports: [NgIf, NgTemplateOutlet],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera extends NgtsCamera<PerspectiveCamera> {\n @ContentChild(NgtsCameraContent) cameraContent?: NgtsCameraContent;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@ import { extend, NgtStore, getLocalState, NgtRxStore, injectNgtRef, NgtArgs, Ngt
4
4
  import { shaderMaterial } from 'angular-three-soba/shaders';
5
5
  import { Subject, combineLatest, switchMap, isObservable, of, debounceTime, map, takeUntil, startWith, withLatestFrom } from 'rxjs';
6
6
  import * as THREE from 'three';
7
- import { Group, Mesh, PlaneGeometry, DirectionalLight, OrthographicCamera, Vector2, Box3, Vector3, Sphere, MeshBasicMaterial, CubeTextureLoader, CubeReflectionMapping, EquirectangularReflectionMapping, sRGBEncoding, LinearEncoding, CubeCamera, HalfFloatType, Points, BufferGeometry, BufferAttribute, Vector4, Color, MathUtils, AmbientLight, SpotLight, PointLight, Spherical, AdditiveBlending } from 'three';
8
- import { NgIf, NgTemplateOutlet } from '@angular/common';
9
- import { HorizontalBlurShader, VerticalBlurShader, RGBELoader, GroundProjectedEnv, Sky } from 'three-stdlib';
7
+ import { Group, Mesh, PlaneGeometry, DirectionalLight, OrthographicCamera, Vector2, Box3, Vector3, Sphere, MeshStandardMaterial, MeshBasicMaterial, CubeTextureLoader, CubeReflectionMapping, EquirectangularReflectionMapping, sRGBEncoding, LinearEncoding, CubeCamera, HalfFloatType, Points, BufferGeometry, BufferAttribute, Vector4, Color, MathUtils, AmbientLight, SpotLight, PointLight, Spherical, AdditiveBlending } from 'three';
8
+ import { SimplexNoise, HorizontalBlurShader, VerticalBlurShader, RGBELoader, GroundProjectedEnv, Sky } from 'three-stdlib';
9
+ import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
10
+ import { NgtsBillboard } from 'angular-three-soba/abstractions';
11
+ import { injectNgtsTextureLoader } from 'angular-three-soba/loaders';
10
12
 
11
13
  function isLight(object) {
12
14
  return object.isLight;
@@ -854,6 +856,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
854
856
  type: Output
855
857
  }] } });
856
858
 
859
+ class NgtsCameraShake extends NgtRxStore {
860
+ set intensity(intensity) {
861
+ this.set({ intensity });
862
+ }
863
+ set decay(decay) {
864
+ this.set({ decay });
865
+ }
866
+ set decayRate(decayRate) {
867
+ this.set({ decayRate });
868
+ }
869
+ set maxYaw(maxYaw) {
870
+ this.set({ maxYaw });
871
+ }
872
+ set maxPitch(maxPitch) {
873
+ this.set({ maxPitch });
874
+ }
875
+ set maxRoll(maxRoll) {
876
+ this.set({ maxRoll });
877
+ }
878
+ set yawFrequency(yawFrequency) {
879
+ this.set({ yawFrequency });
880
+ }
881
+ set pitchFrequency(pitchFrequency) {
882
+ this.set({ pitchFrequency });
883
+ }
884
+ set rollFrequency(rollFrequency) {
885
+ this.set({ rollFrequency });
886
+ }
887
+ initialize() {
888
+ super.initialize();
889
+ this.set({
890
+ intensity: 1,
891
+ decayRate: 0.65,
892
+ maxYaw: 0.1,
893
+ maxPitch: 0.1,
894
+ maxRoll: 0.1,
895
+ yawFrequency: 0.1,
896
+ pitchFrequency: 0.1,
897
+ rollFrequency: 0.1,
898
+ });
899
+ }
900
+ constructor() {
901
+ super();
902
+ this.store = inject(NgtStore);
903
+ this.initialRotation = this.store.get('camera').rotation.clone();
904
+ this.yawNoise = new SimplexNoise();
905
+ this.pitchNoise = new SimplexNoise();
906
+ this.rollNoise = new SimplexNoise();
907
+ injectBeforeRender(({ clock, delta, camera }) => {
908
+ const { intensity, maxYaw, maxPitch, maxRoll, yawFrequency, pitchFrequency, rollFrequency, decay, decayRate, } = this.get();
909
+ const shake = Math.pow(intensity, 2);
910
+ const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);
911
+ const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);
912
+ const roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);
913
+ camera.rotation.set(this.initialRotation.x + pitch, this.initialRotation.y + yaw, this.initialRotation.z + roll);
914
+ if (decay && intensity > 0) {
915
+ this.set({ intensity: intensity - decayRate * delta });
916
+ this.constraintIntensity();
917
+ }
918
+ });
919
+ }
920
+ ngOnInit() {
921
+ this.setChangeEvent();
922
+ }
923
+ setChangeEvent() {
924
+ this.effect(combineLatest([this.store.select('camera'), this.store.select('controls')]), ([camera, controls]) => {
925
+ if (controls) {
926
+ const callback = () => void (this.initialRotation = camera.rotation.clone());
927
+ controls.addEventListener('change', callback);
928
+ callback();
929
+ return () => void controls.removeEventListener('change', callback);
930
+ }
931
+ });
932
+ }
933
+ getIntensity() {
934
+ return this.get('intensity');
935
+ }
936
+ setIntensity(intensity) {
937
+ this.set({ intensity });
938
+ this.constraintIntensity();
939
+ }
940
+ constraintIntensity() {
941
+ const intensity = this.get('intensity');
942
+ if (intensity < 0 || intensity > 1) {
943
+ this.set({ intensity: intensity < 0 ? 0 : 1 });
944
+ }
945
+ }
946
+ }
947
+ NgtsCameraShake.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive });
948
+ NgtsCameraShake.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { intensity: "intensity", decay: "decay", decayRate: "decayRate", maxYaw: "maxYaw", maxPitch: "maxPitch", maxRoll: "maxRoll", yawFrequency: "yawFrequency", pitchFrequency: "pitchFrequency", rollFrequency: "rollFrequency" }, usesInheritance: true, ngImport: i0 });
949
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraShake, decorators: [{
950
+ type: Directive,
951
+ args: [{
952
+ selector: 'ngts-camera-shake',
953
+ standalone: true,
954
+ }]
955
+ }], ctorParameters: function () { return []; }, propDecorators: { intensity: [{
956
+ type: Input
957
+ }], decay: [{
958
+ type: Input
959
+ }], decayRate: [{
960
+ type: Input
961
+ }], maxYaw: [{
962
+ type: Input
963
+ }], maxPitch: [{
964
+ type: Input
965
+ }], maxRoll: [{
966
+ type: Input
967
+ }], yawFrequency: [{
968
+ type: Input
969
+ }], pitchFrequency: [{
970
+ type: Input
971
+ }], rollFrequency: [{
972
+ type: Input
973
+ }] } });
974
+
857
975
  extend({ Group });
858
976
  class NgtsCenter extends NgtRxStore {
859
977
  constructor() {
@@ -991,6 +1109,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
991
1109
  type: Output
992
1110
  }] } });
993
1111
 
1112
+ const CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';
1113
+ extend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });
1114
+ class NgtsCloud extends NgtRxStore {
1115
+ constructor() {
1116
+ super(...arguments);
1117
+ this.store = inject(NgtStore);
1118
+ this.encoding = this.store.get('gl', 'outputEncoding');
1119
+ this.groupRef = injectNgtRef();
1120
+ this.clouds$ = this.select('clouds');
1121
+ this.cloudTexture$ = injectNgtsTextureLoader(this.select('texture'));
1122
+ }
1123
+ set opacity(opacity) {
1124
+ this.set({ opacity });
1125
+ }
1126
+ set speed(speed) {
1127
+ this.set({ speed });
1128
+ }
1129
+ set width(width) {
1130
+ this.set({ width });
1131
+ }
1132
+ set depth(depth) {
1133
+ this.set({ depth });
1134
+ }
1135
+ set segments(segments) {
1136
+ this.set({ segments });
1137
+ }
1138
+ set texture(texture) {
1139
+ this.set({ texture });
1140
+ }
1141
+ set color(color) {
1142
+ this.set({ color });
1143
+ }
1144
+ set depthTest(depthTest) {
1145
+ this.set({ depthTest });
1146
+ }
1147
+ initialize() {
1148
+ super.initialize();
1149
+ this.set({
1150
+ opacity: 0.5,
1151
+ speed: 0.4,
1152
+ width: 10,
1153
+ depth: 1.5,
1154
+ segments: 20,
1155
+ texture: CLOUD_URL,
1156
+ color: '#ffffff',
1157
+ depthTest: true,
1158
+ });
1159
+ this.connect('clouds', this.select(['width', 'segments', 'speed'], ({ width, segments, speed }) => {
1160
+ return [...new Array(segments)].map((_, index) => ({
1161
+ x: width / 2 - Math.random() * width,
1162
+ y: width / 2 - Math.random() * width,
1163
+ scale: 0.4 + Math.sin(((index + 1) / segments) * Math.PI) * ((0.2 + Math.random()) * 10),
1164
+ density: Math.max(0.2, Math.random()),
1165
+ rotation: Math.max(0.002, 0.005 * Math.random()) * speed,
1166
+ }));
1167
+ }));
1168
+ }
1169
+ onBeforeRender({ state, object }) {
1170
+ const clouds = this.get('clouds');
1171
+ object.children.forEach((cloud, index) => {
1172
+ cloud.children[0].rotation.z += clouds[index].rotation;
1173
+ cloud.children[0].scale.setScalar(clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10);
1174
+ });
1175
+ }
1176
+ }
1177
+ NgtsCloud.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCloud, deps: null, target: i0.ɵɵFactoryTarget.Component });
1178
+ NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsCloud, isStandalone: true, selector: "ngts-cloud", inputs: { groupRef: "groupRef", opacity: "opacity", speed: "speed", width: "width", depth: "depth", segments: "segments", texture: "texture", color: "color", depthTest: "depthTest" }, usesInheritance: true, ngImport: i0, template: `
1179
+ <ngt-group ngtCompound [ref]="groupRef">
1180
+ <ngt-group
1181
+ [position]="[0, 0, (get('segments') / 2) * get('depth')]"
1182
+ (beforeRender)="onBeforeRender($any($event))"
1183
+ >
1184
+ <ngts-billboard
1185
+ *ngFor="let cloud of clouds$ | ngtPush : []; let i = index"
1186
+ [position]="[cloud.x, cloud.y, -i * get('depth')]"
1187
+ >
1188
+ <ngt-mesh [scale]="cloud.scale" [rotation]="[0, 0, 0]">
1189
+ <ngt-plane-geometry />
1190
+ <!-- we use ngIf here for texture because by the time ngt-value is initialized -->
1191
+ <!-- [map] has not been resolved yet. we ngIf it so that texture is available before -->
1192
+ <ngt-mesh-standard-material
1193
+ *ngIf="cloudTexture$ | ngtPush as cloudTexture"
1194
+ [transparent]="true"
1195
+ [map]="cloudTexture"
1196
+ [depthTest]="get('depthTest')"
1197
+ [opacity]="(cloud.scale / 6) * cloud.density * get('opacity')"
1198
+ [color]="get('color')"
1199
+ >
1200
+ <ngt-value [rawValue]="encoding" attach="map.encoding" />
1201
+ </ngt-mesh-standard-material>
1202
+ </ngt-mesh>
1203
+ </ngts-billboard>
1204
+ </ngt-group>
1205
+ </ngt-group>
1206
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }, { kind: "component", type: NgtsBillboard, selector: "ngts-billboard", inputs: ["billboardRef", "follow", "lockX", "lockY", "lockZ"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCloud, decorators: [{
1208
+ type: Component,
1209
+ args: [{
1210
+ selector: 'ngts-cloud',
1211
+ standalone: true,
1212
+ template: `
1213
+ <ngt-group ngtCompound [ref]="groupRef">
1214
+ <ngt-group
1215
+ [position]="[0, 0, (get('segments') / 2) * get('depth')]"
1216
+ (beforeRender)="onBeforeRender($any($event))"
1217
+ >
1218
+ <ngts-billboard
1219
+ *ngFor="let cloud of clouds$ | ngtPush : []; let i = index"
1220
+ [position]="[cloud.x, cloud.y, -i * get('depth')]"
1221
+ >
1222
+ <ngt-mesh [scale]="cloud.scale" [rotation]="[0, 0, 0]">
1223
+ <ngt-plane-geometry />
1224
+ <!-- we use ngIf here for texture because by the time ngt-value is initialized -->
1225
+ <!-- [map] has not been resolved yet. we ngIf it so that texture is available before -->
1226
+ <ngt-mesh-standard-material
1227
+ *ngIf="cloudTexture$ | ngtPush as cloudTexture"
1228
+ [transparent]="true"
1229
+ [map]="cloudTexture"
1230
+ [depthTest]="get('depthTest')"
1231
+ [opacity]="(cloud.scale / 6) * cloud.density * get('opacity')"
1232
+ [color]="get('color')"
1233
+ >
1234
+ <ngt-value [rawValue]="encoding" attach="map.encoding" />
1235
+ </ngt-mesh-standard-material>
1236
+ </ngt-mesh>
1237
+ </ngts-billboard>
1238
+ </ngt-group>
1239
+ </ngt-group>
1240
+ `,
1241
+ imports: [NgFor, NgtPush, NgtsBillboard, NgIf],
1242
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
1243
+ }]
1244
+ }], propDecorators: { groupRef: [{
1245
+ type: Input
1246
+ }], opacity: [{
1247
+ type: Input
1248
+ }], speed: [{
1249
+ type: Input
1250
+ }], width: [{
1251
+ type: Input
1252
+ }], depth: [{
1253
+ type: Input
1254
+ }], segments: [{
1255
+ type: Input
1256
+ }], texture: [{
1257
+ type: Input
1258
+ }], color: [{
1259
+ type: Input
1260
+ }], depthTest: [{
1261
+ type: Input
1262
+ }] } });
1263
+
994
1264
  extend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });
995
1265
  class NgtsContactShadows extends NgtRxStore {
996
1266
  set opacity(opacity) {
@@ -2648,5 +2918,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
2648
2918
  * Generated bundle index. Do not edit.
2649
2919
  */
2650
2920
 
2651
- export { NGTS_BOUNDS_API, NgtsAccumulativeShadows, NgtsBounds, NgtsCenter, NgtsContactShadows, NgtsEnvironment, NgtsEnvironmentContent, NgtsFloat, NgtsRandomizedLights, NgtsSky, NgtsSparkles, NgtsStage, NgtsStageRefit, NgtsStars, calcPosFromAngles, ngtsEnvironmentPresetsObj };
2921
+ export { NGTS_BOUNDS_API, NgtsAccumulativeShadows, NgtsBounds, NgtsCameraShake, NgtsCenter, NgtsCloud, NgtsContactShadows, NgtsEnvironment, NgtsEnvironmentContent, NgtsFloat, NgtsRandomizedLights, NgtsSky, NgtsSparkles, NgtsStage, NgtsStageRefit, NgtsStars, calcPosFromAngles, ngtsEnvironmentPresetsObj };
2652
2922
  //# sourceMappingURL=angular-three-soba-staging.mjs.map