// Bold scene roughness animation state
export let boldRoughnessAnimation = {
    isActive: false,
    startTime: 0,
    delayDuration: 1.0, // 1 second delay (will be dynamic)
    transitionDuration: 1.0, // 1 second transition
    startRoughness: 0.5,
    endRoughness: 0.05,
    materials: [] // Store references to bold materials
  };
  
  // Innovation glass animation state
  export let innovationGlassAnimation = {
    isActive: false,
    startTime: 0,
    transitionDuration: 0.2,
    startIor: 1.0,
    endIor: 2.0,
    startThickness: 1.0,
    endThickness: 2.0,
    materials: [] // Store references to innovation glass materials
  };
  
  // Start/restart bold roughness animation with optional delay control
  export function startBoldRoughnessAnimation(withDelay = true) {
    console.log('Starting/restarting bold roughness animation');
    // Reset all bold glass materials to starting roughness value
    boldRoughnessAnimation.materials.forEach(material => {
      material.roughness = boldRoughnessAnimation.startRoughness;
      material.needsUpdate = true;
    });
    boldRoughnessAnimation.isActive = true;
    boldRoughnessAnimation.startTime = performance.now();
    // Set delayDuration based on withDelay parameter
    boldRoughnessAnimation.delayDuration = withDelay ? 1.0 : 0.0;
    console.log('Bold roughness animation started with delay:', withDelay);
  }
  
  // Start innovation glass animation
  export function startInnovationGlassAnimation() {
    console.log('Starting innovation glass animation');
    // Reset all innovation glass materials to starting values
    innovationGlassAnimation.materials.forEach(material => {
      material.ior = innovationGlassAnimation.startIor;
      material.thickness = innovationGlassAnimation.startThickness;
      material.needsUpdate = true;
    });
    innovationGlassAnimation.isActive = true;
    innovationGlassAnimation.startTime = performance.now();
    console.log('Innovation glass animation started');
  }
  
  export function updateBoldRoughnessAnimation() {
    if (boldRoughnessAnimation.isActive) {
      const elapsed = (performance.now() - boldRoughnessAnimation.startTime) / 1000;
      if (elapsed >= boldRoughnessAnimation.delayDuration) {
        // Delay period is over, start roughness transition
        const transitionElapsed = elapsed - boldRoughnessAnimation.delayDuration;
        const transitionProgress = Math.min(transitionElapsed / boldRoughnessAnimation.transitionDuration, 1);
        // Smooth easing function (ease-in-out)
        const easeInOut = (t) => t * t * (3 - 2 * t);
        const easedProgress = easeInOut(transitionProgress);
        // Interpolate roughness from 0.5 to 0.05
        const currentRoughness = boldRoughnessAnimation.startRoughness +
          (boldRoughnessAnimation.endRoughness - boldRoughnessAnimation.startRoughness) * easedProgress;
        // Apply to all bold materials
        boldRoughnessAnimation.materials.forEach(material => {
          material.roughness = currentRoughness;
          material.needsUpdate = true;
        });
        // End animation when complete
        if (transitionProgress >= 1) {
          boldRoughnessAnimation.isActive = false;
          console.log('Bold roughness animation completed');
        }
      }
    }
  }
  
  export function updateInnovationGlassAnimation() {
    if (innovationGlassAnimation.isActive) {
      const elapsed = (performance.now() - innovationGlassAnimation.startTime) / 1000;
      const transitionProgress = Math.min(elapsed / innovationGlassAnimation.transitionDuration, 1);
      // Smooth easing function (ease-in-out)
      const easeInOut = (t) => t * t * (3 - 2 * t);
      const easedProgress = easeInOut(transitionProgress);
      // Interpolate IOR from 1.0 to 2.0
      const currentIor = innovationGlassAnimation.startIor +
        (innovationGlassAnimation.endIor - innovationGlassAnimation.startIor) * easedProgress;
      // Interpolate thickness from 1.0 to 2.0
      const currentThickness = innovationGlassAnimation.startThickness +
        (innovationGlassAnimation.endThickness - innovationGlassAnimation.startThickness) * easedProgress;
      // Apply to all innovation glass materials
      innovationGlassAnimation.materials.forEach(material => {
        material.ior = currentIor;
        material.thickness = currentThickness;
        material.needsUpdate = true;
      });
      // End animation when complete
      if (transitionProgress >= 1) {
        innovationGlassAnimation.isActive = false;
        console.log('Innovation glass animation completed');
      }
    }
  }
  