export interface InputState {
  targetX: number
  targetY: number
  smoothX: number
  smoothY: number
}

export function createInputState(): InputState {
  return { targetX: 0, targetY: 0, smoothX: 0, smoothY: 0 }
}

export function setupInputListeners(state: InputState): void {
  document.addEventListener('mousemove', (e) => {
    state.targetX = (e.clientX / window.innerWidth - 0.5) * 2
    state.targetY = (e.clientY / window.innerHeight - 0.5) * 2
  })

  document.addEventListener('touchmove', (e) => {
    const t = e.touches[0]
    state.targetX = (t.clientX / window.innerWidth - 0.5) * 2
    state.targetY = (t.clientY / window.innerHeight - 0.5) * 2
  }, { passive: true })
}

export function smoothInput(state: InputState): void {
  state.smoothX += (state.targetX - state.smoothX) * 0.025
  state.smoothY += (state.targetY - state.smoothY) * 0.025
}
