{"version":3,"file":"xxmachina-components-templates-background.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/templates/background/shaders/particle.vert.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/shaders/particle.frag.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/utils/webgl-particle-system.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/lain-background.template.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/background.template.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/index.ts","../../../../../packages/@xxmachina/components/src/lib/templates/background/xxmachina-components-templates-background.ts"],"sourcesContent":["export const particleVertexShader = /* glsl */ `\nattribute vec3 velocity;\nattribute float size;\n\nuniform float uTime;\nuniform vec2 uBounds;\n\nvarying vec3 vColor;\nvarying float vAlpha;\n\nvoid main() {\n  vColor = color;\n  vAlpha = 1.0;\n\n  // GPU上で位置更新（時間ベース）\n  vec3 pos = position;\n  pos.x += velocity.x * uTime * 0.01;\n  pos.y += velocity.y * uTime * 0.01;\n\n  // 境界でラップアラウンド\n  pos.x = mod(pos.x + uBounds.x, uBounds.x * 2.0) - uBounds.x;\n  pos.y = mod(pos.y + uBounds.y, uBounds.y * 2.0) - uBounds.y;\n\n  vec4 mvPosition = modelViewMatrix * vec4(pos, 1.0);\n  gl_PointSize = size * (300.0 / -mvPosition.z);\n  gl_Position = projectionMatrix * mvPosition;\n}\n`;\n","export const particleFragmentShader = /* glsl */ `\nvarying vec3 vColor;\nvarying float vAlpha;\n\nvoid main() {\n  // 中心からの距離\n  float dist = length(gl_PointCoord - vec2(0.5));\n\n  // 円形にクリップ\n  if (dist > 0.5) discard;\n\n  // 強いグロー効果（Canvas版のshadowBlur=15を再現）\n  float coreBrightness = exp(-dist * 8.0);           // コア部分（非常に明るい）\n  float glowBrightness = exp(-dist * 2.5) * 0.6;     // 外側のソフトグロー\n  float outerGlow = exp(-dist * 1.5) * 0.3;          // さらに外側の淡いグロー\n  float glow = coreBrightness + glowBrightness + outerGlow;\n\n  // 色を強くブースト（黒背景で映える明るさに）\n  vec3 boostedColor = vColor * 1.5;\n  float alpha = min(glow * vAlpha, 1.0);\n\n  gl_FragColor = vec4(boostedColor, alpha);\n}\n`;\n","import * as THREE from 'three';\nimport { particleVertexShader, particleFragmentShader } from '../shaders';\n\nexport interface ParticleSystemConfig {\n  container: HTMLElement;\n  particleCount?: number;\n  connectionDistance?: number;\n  /** 固定色相を使用する場合に指定（未指定で全色相ランダム） */\n  baseHue?: number;\n  /** 接続線のhue変化速度（デフォルト: 30） */\n  hueSpeed?: number;\n}\n\nexport class WebGLParticleSystem {\n  private scene: THREE.Scene;\n  private camera: THREE.PerspectiveCamera;\n  private renderer: THREE.WebGLRenderer;\n  private particles: THREE.Points;\n  private lines: THREE.LineSegments;\n  private clock: THREE.Clock;\n  private config: Required<ParticleSystemConfig>;\n  private positions: Float32Array;\n  private velocities: Float32Array;\n  private isRunning = false;\n  private frameCount = 0;  // 接続線更新頻度制御用\n  private readonly onResize = () => {\n    const { width, height } = this.getSize();\n    this.camera.aspect = width / height;\n    this.camera.updateProjectionMatrix();\n    this.renderer.setSize(width, height);\n    const material = this.particles.material as THREE.ShaderMaterial;\n    material.uniforms['uBounds'].value.set(width / 2, height / 2);\n  };\n  private readonly onVisibilityChange = () => {\n    if (document.hidden) {\n      this.stop();\n    } else {\n      this.start();\n    }\n  };\n\n  constructor(config: ParticleSystemConfig) {\n    this.config = {\n      container: config.container,\n      particleCount: config.particleCount ?? this.getOptimalParticleCount(),\n      connectionDistance: config.connectionDistance ?? 100,  // パフォーマンス優先で短縮\n      baseHue: config.baseHue ?? -1, // -1 = 全色相ランダム\n      hueSpeed: config.hueSpeed ?? 30,\n    };\n\n    this.scene = new THREE.Scene();\n    this.scene.background = new THREE.Color(0x000000);\n    this.clock = new THREE.Clock();\n    this.positions = new Float32Array(this.config.particleCount * 3);\n    this.velocities = new Float32Array(this.config.particleCount * 3);\n\n    this.camera = this.createCamera();\n    this.renderer = this.createRenderer();\n    this.particles = this.createParticles();\n    this.lines = this.createLines();\n\n    this.scene.add(this.particles);\n    this.scene.add(this.lines);\n\n    this.setupResizeHandler();\n    this.setupVisibilityHandler();\n  }\n\n  private getOptimalParticleCount(): number {\n    const isMobile = /iPhone|iPad|Android/i.test(navigator.userAgent);\n    // パフォーマンス優先：パーティクル数を削減\n    return isMobile ? 60 : 100;\n  }\n\n  private createCamera(): THREE.PerspectiveCamera {\n    const { width, height } = this.getSize();\n    const camera = new THREE.PerspectiveCamera(75, width / height, 1, 2000);\n    camera.position.z = 400;\n    return camera;\n  }\n\n  private createRenderer(): THREE.WebGLRenderer {\n    const { width, height } = this.getSize();\n    const renderer = new THREE.WebGLRenderer({\n      antialias: true,\n      alpha: false,  // 黒背景を強制（透明にしない）\n    });\n    renderer.setSize(width, height);\n    renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n    renderer.setClearColor(0x000000, 1);  // 明示的に黒背景を設定\n    this.config.container.appendChild(renderer.domElement);\n\n    // Canvas styling - コンテナ内に配置（position: absoluteに変更）\n    renderer.domElement.style.position = 'absolute';\n    renderer.domElement.style.top = '0';\n    renderer.domElement.style.left = '0';\n    renderer.domElement.style.width = '100%';\n    renderer.domElement.style.height = '100%';\n\n    return renderer;\n  }\n\n  private createParticles(): THREE.Points {\n    const { particleCount, baseHue } = this.config;\n    const { width, height } = this.getSize();\n\n    const geometry = new THREE.BufferGeometry();\n    const colors = new Float32Array(particleCount * 3);\n    const sizes = new Float32Array(particleCount);\n\n    for (let i = 0; i < particleCount; i++) {\n      const i3 = i * 3;\n\n      // ランダム位置\n      this.positions[i3] = (Math.random() - 0.5) * width;\n      this.positions[i3 + 1] = (Math.random() - 0.5) * height;\n      this.positions[i3 + 2] = (Math.random() - 0.5) * 100;\n\n      // ランダム速度\n      this.velocities[i3] = (Math.random() - 0.5) * 50;\n      this.velocities[i3 + 1] = (Math.random() - 0.5) * 50;\n      this.velocities[i3 + 2] = 0;\n\n      // HSLカラー（baseHue < 0 なら全色相ランダム）\n      const hue = baseHue < 0\n        ? Math.random()  // 0-1 (全色相)\n        : (baseHue + Math.random() * 60) / 360;\n      // 彩度70%、明度60%で鮮やかに（Canvas版のshadowBlur効果を再現）\n      const color = new THREE.Color().setHSL(hue, 0.7, 0.6);\n      colors[i3] = color.r;\n      colors[i3 + 1] = color.g;\n      colors[i3 + 2] = color.b;\n\n      sizes[i] = Math.random() * 2 + 2;  // サイズ2-4（パフォーマンス優先）\n    }\n\n    geometry.setAttribute('position', new THREE.BufferAttribute(this.positions, 3));\n    geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3));\n    geometry.setAttribute('velocity', new THREE.BufferAttribute(this.velocities, 3));\n    geometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1));\n\n    const material = new THREE.ShaderMaterial({\n      vertexShader: particleVertexShader,\n      fragmentShader: particleFragmentShader,\n      uniforms: {\n        uTime: { value: 0 },\n        uBounds: { value: new THREE.Vector2(width / 2, height / 2) },\n      },\n      transparent: true,\n      vertexColors: true,\n      blending: THREE.AdditiveBlending,\n      depthWrite: false,\n    });\n\n    return new THREE.Points(geometry, material);\n  }\n\n  private createLines(): THREE.LineSegments {\n    const geometry = new THREE.BufferGeometry();\n    const material = new THREE.LineBasicMaterial({\n      vertexColors: true,\n      transparent: true,\n      blending: THREE.AdditiveBlending,\n      depthWrite: false,\n    });\n    return new THREE.LineSegments(geometry, material);\n  }\n\n  private updateConnections() {\n    const { particleCount, connectionDistance, baseHue, hueSpeed } = this.config;\n    const positions: number[] = [];\n    const colors: number[] = [];\n\n    // 空間分割グリッド\n    const cellSize = connectionDistance;\n    const grid = new Map<string, number[]>();\n\n    // パーティクルをグリッドに配置\n    for (let i = 0; i < particleCount; i++) {\n      const x = this.positions[i * 3];\n      const y = this.positions[i * 3 + 1];\n      const cellX = Math.floor(x / cellSize);\n      const cellY = Math.floor(y / cellSize);\n      const key = `${cellX},${cellY}`;\n      if (!grid.has(key)) grid.set(key, []);\n      grid.get(key)!.push(i);\n    }\n\n    // 接続線のhue（全色相でゆっくり変化）\n    const elapsed = this.clock.getElapsedTime();\n    const lineHue = baseHue < 0\n      ? ((elapsed * hueSpeed) % 360) / 360\n      : (baseHue + (elapsed * hueSpeed) % 60) / 360;\n    // 色計算をキャッシュ（パフォーマンス向上）\n    const lineColor = new THREE.Color().setHSL(lineHue, 0.8, 0.65);\n\n    // 近傍セルのみ探索\n    for (const [key, indices] of grid.entries()) {\n      const [cx, cy] = key.split(',').map(Number);\n\n      for (let dx = -1; dx <= 1; dx++) {\n        for (let dy = -1; dy <= 1; dy++) {\n          const neighborKey = `${cx + dx},${cy + dy}`;\n          const neighborIndices = grid.get(neighborKey);\n          if (!neighborIndices) continue;\n\n          for (const i of indices) {\n            for (const j of neighborIndices) {\n              if (i >= j) continue;\n\n              const i3 = i * 3;\n              const j3 = j * 3;\n              const pdx = this.positions[i3] - this.positions[j3];\n              const pdy = this.positions[i3 + 1] - this.positions[j3 + 1];\n              const dist = Math.sqrt(pdx * pdx + pdy * pdy);\n\n              if (dist < connectionDistance) {\n                const alpha = (1 - dist / connectionDistance) * 0.7;\n\n                positions.push(\n                  this.positions[i3], this.positions[i3 + 1], this.positions[i3 + 2],\n                  this.positions[j3], this.positions[j3 + 1], this.positions[j3 + 2]\n                );\n                // キャッシュした色を使用（パフォーマンス向上）\n                colors.push(\n                  lineColor.r * alpha, lineColor.g * alpha, lineColor.b * alpha,\n                  lineColor.r * alpha, lineColor.g * alpha, lineColor.b * alpha\n                );\n              }\n            }\n          }\n        }\n      }\n    }\n\n    this.lines.geometry.dispose();\n    this.lines.geometry = new THREE.BufferGeometry();\n    if (positions.length > 0) {\n      this.lines.geometry.setAttribute('position',\n        new THREE.Float32BufferAttribute(positions, 3));\n      this.lines.geometry.setAttribute('color',\n        new THREE.Float32BufferAttribute(colors, 3));\n    }\n  }\n\n  private updateParticlePositions(delta: number) {\n    const { width, height } = this.getSize();\n    const halfW = width / 2;\n    const halfH = height / 2;\n\n    for (let i = 0; i < this.config.particleCount; i++) {\n      const i3 = i * 3;\n\n      // 速度による移動\n      this.positions[i3] += this.velocities[i3] * delta;\n      this.positions[i3 + 1] += this.velocities[i3 + 1] * delta;\n\n      // 境界でラップアラウンド\n      if (this.positions[i3] > halfW) this.positions[i3] = -halfW;\n      if (this.positions[i3] < -halfW) this.positions[i3] = halfW;\n      if (this.positions[i3 + 1] > halfH) this.positions[i3 + 1] = -halfH;\n      if (this.positions[i3 + 1] < -halfH) this.positions[i3 + 1] = halfH;\n    }\n\n    this.particles.geometry.attributes['position'].needsUpdate = true;\n  }\n\n  private animate = () => {\n    if (!this.isRunning) return;\n\n    const delta = this.clock.getDelta();\n    const elapsed = this.clock.getElapsedTime();\n\n    // パーティクル位置更新\n    this.updateParticlePositions(delta);\n\n    // シェーダーuniform更新\n    const material = this.particles.material as THREE.ShaderMaterial;\n    material.uniforms['uTime'].value = elapsed;\n\n    // 接続線更新（3フレームに1回にしてパフォーマンス向上）\n    this.frameCount++;\n    if (this.frameCount % 3 === 0) {\n      this.updateConnections();\n    }\n\n    // 描画\n    this.renderer.render(this.scene, this.camera);\n    requestAnimationFrame(this.animate);\n  };\n\n  private getSize() {\n    return {\n      width: window.innerWidth,\n      height: window.innerHeight,\n    };\n  }\n\n  private setupResizeHandler() {\n    window.addEventListener('resize', this.onResize);\n  }\n\n  private setupVisibilityHandler() {\n    document.addEventListener('visibilitychange', this.onVisibilityChange);\n  }\n\n  start() {\n    if (this.isRunning) return;\n    this.isRunning = true;\n    this.clock.start();\n    requestAnimationFrame(this.animate);\n  }\n\n  stop() {\n    this.isRunning = false;\n    this.clock.stop();\n  }\n\n  dispose() {\n    this.stop();\n    window.removeEventListener('resize', this.onResize);\n    document.removeEventListener('visibilitychange', this.onVisibilityChange);\n    this.particles.geometry.dispose();\n    (this.particles.material as THREE.Material).dispose();\n    this.lines.geometry.dispose();\n    (this.lines.material as THREE.Material).dispose();\n    this.renderer.dispose();\n    this.config.container.removeChild(this.renderer.domElement);\n  }\n}\n","import { Component, input, ElementRef, afterNextRender, OnDestroy, viewChild } from '@angular/core';\nimport { WebGLParticleSystem } from './utils';\n\n@Component({\n  selector: 'app-background-template',\n  standalone: true,\n  template: `\n    <div #container></div>\n    <div class=\"overlay\">\n      <div class=\"scanlines\"></div>\n      <div class=\"glitch-text\" [class.glitch]=\"isGlitching\">\n        {{ currentMessage }}\n      </div>\n    </div>\n    <div class=\"content\">\n      @if (title()) {\n        <h1 class=\"title\">{{ title() }}</h1>\n      }\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: `\n    :host {\n      display: block;\n      position: fixed;\n      width: 100%;\n      height: 100vh;\n      color: white;\n      z-index: -1;\n    }\n\n    .overlay {\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      pointer-events: none;\n      z-index: 0;\n    }\n\n    .scanlines {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      background: repeating-linear-gradient(\n        0deg,\n        rgba(0, 0, 0, 0.1) 0px,\n        rgba(0, 0, 0, 0.1) 1px,\n        transparent 1px,\n        transparent 2px\n      );\n      opacity: 0.3;\n    }\n\n    .glitch-text {\n      position: absolute;\n      top: 20px;\n      left: 20px;\n      font-family: \"Courier New\", monospace;\n      font-size: 14px;\n      color: rgba(0, 255, 255, 0.8);\n      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);\n      white-space: pre-line;\n      transition: transform 0.1s;\n    }\n\n    .glitch-text.glitch {\n      animation: glitch 0.3s ease-in-out;\n    }\n\n    @keyframes glitch {\n      0%, 100% { transform: translate(0); }\n      20% { transform: translate(-2px, 2px); }\n      40% { transform: translate(2px, -2px); }\n      60% { transform: translate(-1px, -1px); }\n      80% { transform: translate(1px, 1px); }\n    }\n\n    .content {\n      position: relative;\n      z-index: 1;\n      padding: 2rem;\n    }\n\n    .title {\n      font-size: 2rem;\n      margin-bottom: 1rem;\n      font-family: \"Courier New\", monospace;\n      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);\n    }\n  `\n})\nexport class BackgroundTemplate implements OnDestroy {\n  title = input<string>('');\n\n  private container = viewChild.required<ElementRef<HTMLDivElement>>('container');\n  private particleSystem: WebGLParticleSystem | null = null;\n  private glitchInterval: number | null = null;\n\n  protected currentMessage = '(x_x) PROTOCOL.7 (x_x)';\n  protected isGlitching = false;\n\n  private messages = [\n    '(x_x) PROTOCOL.7 (x_x)',\n    '[MACHINA:01] INITIALIZING...',\n    '(>_<) SYSTEM OVERLOAD (>_<)',\n    '▓▓▒▒░░W I R E D░░▒▒▓▓',\n    '【=◈︿◈=】LAYER:13【=◈︿◈=】',\n    '[▀▄▀▄▀▄] NAV¡GATOR [▄▀▄▀▄▀]',\n    '(╥﹏╥) ERROR_404 (╥﹏╥)',\n    '▌│█║▌║▌║ CONNECTING... ║▌║▌║█│▌'\n  ];\n  private messageIndex = 0;\n\n  constructor() {\n    afterNextRender(() => {\n      this.particleSystem = new WebGLParticleSystem({\n        container: this.container().nativeElement,\n        baseHue: 180, // シアン〜グリーン系（Lainテーマ）\n        connectionDistance: 80,\n      });\n      this.particleSystem.start();\n\n      // グリッチエフェクト（5秒ごと）\n      this.glitchInterval = window.setInterval(() => this.triggerGlitch(), 5000);\n    });\n  }\n\n  private triggerGlitch() {\n    this.isGlitching = true;\n    this.messageIndex = (this.messageIndex + 1) % this.messages.length;\n    this.currentMessage = this.messages[this.messageIndex];\n\n    setTimeout(() => {\n      this.isGlitching = false;\n    }, 300);\n  }\n\n  ngOnDestroy() {\n    this.particleSystem?.dispose();\n    if (this.glitchInterval !== null) {\n      clearInterval(this.glitchInterval);\n    }\n  }\n}\n","import { Component, ElementRef, afterNextRender, OnDestroy, viewChild } from '@angular/core';\nimport { WebGLParticleSystem } from './utils';\n\n@Component({\n  selector: 'machina-templates-background',\n  standalone: true,\n  template: `<div #container></div>`,\n  styles: `\n    :host {\n      display: block;\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      z-index: -1;\n      pointer-events: none;\n    }\n  `\n})\nexport class MachinaBackgroundTemplate implements OnDestroy {\n  private container = viewChild.required<ElementRef<HTMLDivElement>>('container');\n  private particleSystem: WebGLParticleSystem | null = null;\n\n  constructor() {\n    afterNextRender(() => {\n      this.particleSystem = new WebGLParticleSystem({\n        container: this.container().nativeElement,\n        // baseHue未指定 = 全色相ランダム（元の実装と同じ）\n      });\n      this.particleSystem.start();\n    });\n  }\n\n  ngOnDestroy() {\n    this.particleSystem?.dispose();\n  }\n}\n","import { provideComponent } from '@ng-atomic/core';\nimport { BackgroundTemplate as LainBapBackgroundTemplate } from './lain-background.template';\nimport { BackgroundTemplateStore } from '@ng-atomic/components/templates/background';\nimport { MachinaBackgroundTemplate } from './background.template';\n\nexport * from './background.template';\n\nexport function provideMachinaBackgroundTemplate() {\n  return provideComponent(BackgroundTemplateStore, () => MachinaBackgroundTemplate);\n}\n\nexport function provideLainBackgroundTemplate() {\n  return provideComponent(BackgroundTemplateStore, () => LainBapBackgroundTemplate);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["LainBapBackgroundTemplate"],"mappings":"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"}