Ord.io Logo
Ord.io
<div class="load">
  <img class="load" width="100px" height="100px" src="/content/0b632e2759a669b034e33e9217a917c787d65b728dd3e0761081380924c0bbbdi0" />
</div>
<div id="root"></div>

<head>
  <style>
    html,
    body,
    #root {
      margin: 0;
      width: 100%;
      height: 100%;
      overflow: hidden;
      background-color: black;
    }

    .load {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }
  </style>

  <script type="module">
    //BLOB
    await import(
      '/content/0b7ba5105ad7e8d47f32530e937a315667578c87827876cec754bbd970793547i0'
    ).then((o_o) =>
      o_o
      .ordEngine({
        r3f: true,
        CameraControls: true,
        environment: true,
        statery: true,
        sceneComposer: true,
        drei2: true,
        drei3: true,
        pane: true,
        postprocessing: true,
        vfx: true,
      })
      .then(() => {
        document.querySelector('.load').style.display = 'none';
      })
    );

    const tunnelStore = makeStore({
      active: false
    });

    const useDracoGLTF = (url) => {
      const [gltf, setGltf] = useState(null);
      useEffect(() => {
        const useDracoGLTF = async () => {
          try {
            const codeUrl =
              '/content/00ae91a4f7f4f6fa98c1deb0f57359079f7b5299094378ff15fa1c7f4366db3ci0';
            const response = await fetch(codeUrl);
            const code = await response.text();
            let modifiedCode = code.replace(
              'THREE.DRACOLoader=t',
              'window.DRACOLoader=t'
            );
            let modifiedCode2 = modifiedCode.replace(
              '/content/',
              window.location.origin + '/content/'
            );
            const blob = new Blob([modifiedCode2], {
              type: 'application/javascript',
            });
            const blobUrl = URL.createObjectURL(blob);
            const script = document.createElement('script');
            script.type = 'module';
            script.src = blobUrl;
            script.onload = () => {
              const loader = new PAC2.GLTFLoader();
              const draco = new window.DRACOLoader();
              loader.setDRACOLoader(draco);
              loader.load(
                url,
                (gltf) => {
                  setGltf(gltf);
                },
                undefined,
                (error) => {
                  console.error('Error loading GLTF:', error);
                  setError(error);
                }
              );
            };
            document.head.appendChild(script);
          } catch (error) {
            console.error('Error fetching or processing code:', error);
          }
        };
        useDracoGLTF();
      }, [url]);
      return gltf;
    };

    window.useDracoGLTF = useDracoGLTF;

    const Book = (props) => {
      // load file
      const gltf = useDracoGLTF(
        '/content/f07c9f52c8337edbb60ae4345150a48e287f17006a651300ad18306a2e86868ci0'
      );

      useFrame(({
        clock
      }) => {
        if (gltf && gltf.scene) {
          gltf.scene.position.y += Math.sin(clock.elapsedTime) * 0.01;
          gltf.scene.position.z += Math.cos(clock.elapsedTime) * 0.0003;
          gltf.scene.position.x += Math.sin(clock.elapsedTime * 1.4) * 0.006;

          gltf.scene.rotation.y += Math.sin(clock.elapsedTime) * 0.002;
          gltf.scene.rotation.z += Math.cos(clock.elapsedTime) * 0.0012;
          gltf.scene.rotation.x += Math.sin(clock.elapsedTime * 1.4) * 0.002;
        }
      });

      // display placeholder until ready
      if (!gltf) {
        return null;
      } else {
        return html` <group
          rotation=${props.rotation}
          position=${props.position}
          scale=${props.scale}
        >
          <primitive scale="100" object=${gltf.scene} />
        </group>`;
      }
    };

    const meta = {
      Name: 'Epic',
      Spike: 1,
      attributes: {
        'Blob Buddies': 2,
        Blob: 'organic',
        Skin: 'graph',
        Realm: 'physical',
        Wireframe: 'blob',
      },
    };

    let audioUrl =
      '/content/3a533772ec8d8cb0e5a3788d39952796d5d52b1d2a3a909d66432e26046e8174i0';

    const {
      BlobBuddy,
      Eyes,
      vertex,
      fragment,
      realms
    } = await import(
      '/content/c9fe50a7c2938430caf594200d8e3cb2463b6ca9cd83f74f6aa303fabcd7b3b1i0'
    );

    const {
      Color
    } = THREE;

    window.sceneStarted = true;

    const buddies = meta.attributes['Blob Buddies'];
    const eyes = meta.attributes['Realm'];
    const vert = meta.attributes['Blob'];
    const frag = meta.attributes['Skin'];

    let wireframe = false;
    if (meta.attributes['Wireframe']) {
      wireframe = true;
    }
    const color = fragment[frag];
    const shape = vertex[vert];

    document.body.style.background = 'none';

    const hoverEvents = {
      onPointerEnter: () => {
        document.body.style.cursor = 'pointer';
      },
      onPointerLeave: () => {
        document.body.style.cursor = 'auto';
      },
      onClick: async () => {
        play();

        document.body.style.transition = 'none';
        document.body.style.opacity = '1';
      },
    };

    const scene1 = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.01,
      maxZoom: 1.7976931348623157e308,
      minPolarAngle: 1.5707963268,
      maxPolarAngle: 1.5707963268,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.9,
      draggingSmoothTime: 0.125,
      dollySpeed: 0,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, 0],
      position: [0, 0.4654114749945175, 30000],
      zoom: 2,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const start = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.01,
      maxZoom: 1.7976931348623157e308,
      minPolarAngle: 0,
      maxPolarAngle: 3.141592653589793,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.25,
      draggingSmoothTime: 0.125,
      dollySpeed: 1,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, 0],
      position: [0, 194.393179687732, 157.19825600461715],
      zoom: 2,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const scene2 = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.05,
      maxZoom: 0.05,
      minPolarAngle: 0,
      maxPolarAngle: 3.141592653589793,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.25,
      draggingSmoothTime: 0.125,
      dollySpeed: 1,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, 0],
      position: [0, 0.4654114749914877, 39999.99999999999],
      zoom: 0.04999999999999998,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const scene3 = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.05,
      maxZoom: 0.05,
      minPolarAngle: 0,
      maxPolarAngle: 3.141592653589793,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.75,
      draggingSmoothTime: 0.125,
      dollySpeed: 1,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, 0],
      position: [-63.70611665947312, 0.4654114749914877, -39999.94926910157],
      zoom: 0.05,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const scene4 = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.01,
      maxZoom: 1.7976931348623157e308,
      minPolarAngle: 0,
      maxPolarAngle: 3.141592653589793,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.2,
      draggingSmoothTime: 0.125,
      dollySpeed: 1,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, -508800],
      position: [0, 0.4552934294705598, -479452.20000353165],
      zoom: 2,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const scene6 = {
      enabled: true,
      minDistance: 2.220446049250313e-16,
      maxDistance: 1.7976931348623157e308,
      minZoom: 0.01,
      maxZoom: 1.7976931348623157e308,
      minPolarAngle: 1.37,
      maxPolarAngle: 1.37,
      minAzimuthAngle: -1.7976931348623157e308,
      maxAzimuthAngle: 1.7976931348623157e308,
      smoothTime: 0.25,
      draggingSmoothTime: 0.125,
      dollySpeed: 1,
      truckSpeed: 2,
      dollyToCursor: false,
      verticalDragToForward: false,
      target: [0, 0, -2159600],
      position: [-3744.0325772282144, -855.2926176106155, -2130504.569784263],
      zoom: 2,
      focalOffset: [0, 0, 0],
      target0: [0, 0, 0],
      position0: [0, 0.3, 35],
      zoom0: 2,
      focalOffset0: [0, 0, 0],
    };

    const Blobby = ({
      wireframe,
      shape,
      color
    }) => {
      const meshRef = useRef();

      useFrame(({
        clock
      }) => {
        const time = clock.getElapsedTime();
        meshRef.current.material.uniforms.time.value = time;
      });

      return html`<mesh renderOrder=${2} ref=${meshRef}>
        <sphereGeometry args=${[1, 32, 32]} />
        <shaderMaterial
          side=${THREE.DoubleSide}
          vertexShader=${shape}
          fragmentShader=${color}
          transparent=${true}
          depthWrite=${true}
          wireframe=${wireframe}
          blending=${THREE.AdditiveBlending}
          uniforms=${{
            time: { value: 0 },
          }}
        />
      </mesh>`;
    };

    const Cam = () => {
      const ref = useRef();

      const {
        active
      } = useStore(tunnelStore);

      useEffect(() => {
        window.cam = ref.current;
        window.cam.fromJSON(JSON.stringify(scene1));
      }, []);

      useFrame((state, dt) => {
        const start = 0;
        const end = -2700000;
        const dur = 55;
        const delay = 30;

        if (active) {
          const distancePerSecond = (end - start) / dur;
          window.blobRef.current.position.z += distancePerSecond * dt;
        }

        if (window.cam && blobRef.current) {
          window.cam.moveTo(
            blobRef.current.position.x,
            blobRef.current.position.y,
            blobRef.current.position.z,
            true
          );

          window.cam.setTarget(
            blobRef.current.position.x,
            blobRef.current.position.y,
            blobRef.current.position.z,
            true
          );
        }
      });
      return html` <${CameraControls}
        rotation=${[0, Math.PI, 0]}
        ref=${ref}
      />`;
    };

    const Bloberson = ({
      scale,
      position
    }) => {
      const ref = useRef();

      useFrame(() => {
        if (window.avg) {
          ref.current.scale.x = 1 + window.avg * 0.01;
          ref.current.scale.y = 1 + window.avg * 0.01;
          ref.current.scale.z = 1 + window.avg * 0.01;
        }
      });

      return html` <group scale=${scale}>
        <group ref=${ref} position=${position}>
          ${buddies > 0 &&
          Array.from({ length: buddies }).map(
            () =>
              html` < $ {
        BlobBuddy
      }
      color = $ {
        color
      }
      shape = $ {
        shape
      }
      wireframe = $ {
        wireframe
      }
      />`
    )
    }
    $ {
      meta.attributes &&
        html`
            <${Blobby} color=${color} shape=${shape} wireframe=${wireframe} />
          `
    } <
    $ {
      Eyes
    }
    position = $ {
      [0.32, 0.27, 1.2]
    }
    colors = $ {
      realms[eyes]
    }
    /> <
    /group> <
    /group>`;
    };

    const tunnelShaders = {
      frag: {
        neon: `
                  uniform vec3 color;
              uniform float time;
              varying vec2 vUv;

              void main() {
                  // Coordinate transformations for more interesting patterns
                  vec2 pos = vUv * 6.0 - 3.0; // Scale and translate UVs
                  float len = length(pos); // Distance from center

                  // Base color modulation with time and space
                  vec3 dynamicColor = 0.5 + 0.5 * cos(time + len * 12.0 + vec3(0.0, 2.0, 4.0));

                  // Swirling patterns
                  float angle = atan(pos.y, pos.x) + time;
                  float swirl = sin(angle * 8.0) * cos(angle * 8.0);

                  // Combining multiple color channels
                  vec3 colorChannels;
                  colorChannels.r = 0.5 + 0.5 * sin(time * 1.2 + swirl);
                  colorChannels.g = 0.5 + 0.5 * sin(time * 0.7 + swirl + 2.0);
                  colorChannels.b = 0.5 + 0.5 * sin(time * 1.5 + swirl + 4.0);

                  // Final color mixing
                  vec3 finalColor = mix(dynamicColor, colorChannels, 0.6 + 0.4 * sin(time * 0.5));

                  // Flickering effect
                  float flicker = 0.5 + 0.5 * sin(time * 10.0 + len * 20.0);
                  finalColor *= flicker;

                  gl_FragColor = vec4(finalColor, 1.0);
              }
                  `,
        lsd: `
                  uniform float time;
                      varying vec2 vUv;

                      // Function to generate a smooth random gradient
                      float hash(float n) {
                          return fract(sin(n) * 43758.5453);
                      }

                      // Function to create swirling patterns
                      float swirl(float x, float y, float time) {
                          float dx = sin(time * 2.0 + x * 10.0);
                          float dy = cos(time * 2.0 + y * 10.0);
                          return sin(sqrt(dx*dx + dy*dy) * 10.0);
                      }

                      void main() {
                          // Base dynamic pattern
                          float dynamic = swirl(vUv.x, vUv.y, time);

                          // Color modulation to create a psychedelic effect
                          vec3 color1 = vec3(sin(time + vUv.y * 5.0), cos(time + vUv.x * 5.0), sin(time + vUv.x * vUv.y));
                          vec3 color2 = vec3(sin(time * 2.0 + vUv.x * 20.0), cos(time * 2.0 + vUv.y * 18.0), sin(time * 1.5 + vUv.x * vUv.y * 15.0));

                          // Combine two color layers based on dynamic patterns
                          vec3 mixedColor = mix(color1, color2, (sin(time * 3.0 + dynamic * 20.0) + 1.0) / 2.0);

                          // Intensity modulation to enhance the psychedelic effect
                          float intensity = 0.5 + 0.5 * sin(time * 5.0 + dynamic * 25.0);

                          // Final color output with swirling and flickering
                          gl_FragColor = vec4(mixedColor * intensity, 1.0);
                      }`,
        slots: `
                  uniform vec3 color;
                  uniform float time;
                  varying vec2 vUv;

                  void main() {
                      // Base dynamic color modulation
                      vec3 dynamicColor = vec3(sin(time + vUv.x * 6.28), cos(time + vUv.y * 6.28), sin(time + vUv.x * 6.28 + vUv.y * 6.28));

                      // Swirling pattern
                      float swirlFactor = sin(time * 3.0 + length(vUv * 40.0)) * 0.5 + 0.5;
                      vec3 swirlColor = mix(vec3(0.1, 0.2, 0.5), vec3(1.0, 0.0, 0.5), swirlFactor);

                      // Neurons fireworks effect
                      float fireworkIntensity = pow(sin(vUv.x * 20.0 + time) * cos(vUv.y * 20.0 + time), 12.0);
                      vec3 fireworkColor = vec3(1.0, 0.8, 0.2) * fireworkIntensity;

                      // Combine all effects
                      vec3 combinedColor = dynamicColor * swirlColor + fireworkColor;

                      // Final color modulation to enhance visibility and contrast
                      float finalModulation = 0.5 + 0.5 * sin(time * 2.0 + vUv.x * 40.0);
                      vec3 finalColor = combinedColor * finalModulation;

                      gl_FragColor = vec4(finalColor, 1.0);
                  }

                      `,
      },
      vert: {
        eegwave: `
                  vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}
                          float noise(vec3 p){
                              vec3 a = floor(p);
                              vec3 d = p - a;
                              d = d * d * (3.0 - 2.0 * d);

                              vec4 b = a.xyxy + vec4(0.0, 1.0, 0.0, 1.0);
                              vec4 k1 = permute(b.xyxy + vec4(0.0, b.z, 1.0, b.w));
                              vec4 k2 = permute(k1.xyxy + vec4(b.z, b.z, b.w, b.w));
                              vec4 c = k2 + a.zzzz;
                              vec4 k3 = permute(c);
                              vec4 k4 = permute(c + 1.0);
                              vec4 o1 = fract(k3 * (1.0 / 41.0));
                              vec4 o2 = fract(k4 * (1.0 / 41.0));
                              vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
                              vec2 b1 = mix(o3.xy, o3.zw, d.y);
                              return mix(b1.x, b1.y, d.x);
                          }
                          uniform float time;
                          uniform float channelOffset;
                          varying vec2 vUv;

                          void main() {
                              vUv = uv;
                              vec3 pos = position;
                              float noiseScale = 0.3;
                              float waveHeight = 8.0;
                              float wave = noise(vec3(pos.x * noiseScale, pos.y * noiseScale, time + channelOffset)) * waveHeight;
                              pos.y += wave;
                              gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
                          }`,
      },
    };

    const EEGWavePlane = ({
      color = new THREE.Color(0x00ff00),
      position,
      frag,
      vert,
      segments = 30,
    }) => {
      const groupRef = useRef();

      const channels = 25;
      const channelDepth = 20;

      useFrame(({
        clock
      }) => {
        groupRef.current.children.forEach((mesh, index) => {
          mesh.material.uniforms.time.value = clock.getElapsedTime();
        });
      });

      return html`<group position=${position} ref=${groupRef}>
        ${Array.from(
          { length: channels },
          (_, index) =>
            html` < mesh key = $ {
        index
      }
      position = $ {
          [0, 0, index * channelDepth]
        } >
        <
        torusGeometry args = $ {
          [15, 2, 5, segments]
        }
      /> <
      shaderMaterial
      uniforms = $ {
        {
          time: {
            value: 0
          },
          color: {
            value: color
          },
          channelOffset: {
            value: (index * Math.PI) / 8
          },
        }
      }
      vertexShader = $ {
        vert
      }
      fragmentShader = $ {
        frag
      }
      transparent = $ {
        true
      }
      depthWrite = $ {
        true
      }
      wireframe = $ {
        false
      }
      /> <
      /mesh>`
    )
    } <
    /group> `;
    };

    const Planet = ({
      speed,
      radius,
      diameter,
      color,
      scale
    }) => {
      const ref = useRef();

      useEffect(() => {
        ref.current.rotation.y = Math.random() * Math.PI * 2;
      }, []);

      useFrame(() => {
        ref.current.rotation.y += speed / 20;
      });

      return html` <group scale=${scale} ref=${ref}>
        <group position=${[radius, 0, 0]}>
          <${Bloberson} scale=${[4, 4, 4]} />
        </group>
      </group>`;
    };

    const SolarSystem = ({
      scale
    }) => {
      return html` <group scale=${scale}>
        <${Planet}
          scale=${[1, 1, 1]}
          radius=${45}
          speed=${0.1}
          diameter=${1}
          color=${'purple'}
        />
        <${Planet}
          scale=${[1, 1, 1]}
          radius=${55}
          speed=${0.08}
          diameter=${1}
          color=${'purple'}
        />
        <${Planet}
          scale=${[1, 1, 1]}
          radius=${65}
          speed=${0.04}
          diameter=${1}
          color=${'purple'}
        />
        <${Planet}
          scale=${[1, 1, 1]}
          radius=${120}
          speed=${0.03}
          diameter=${1}
          color=${'purple'}
        />
      </group>`;
    };

    const Postprocessing = () => {
      const ref = useRef();
      const brightnessContrast = useRef();
      const bloom1 = useRef();
      const bloom2 = useRef();

      return html`
        <${POST.EffectComposer} ref=${ref} multisampling=${8}>
          <!--                <${POST.SMAA} />-->
          <${POST.BrightnessContrast}
            ref=${brightnessContrast}
            contrast="0.0"
          />
          <${POST.Bloom}
            kernelSize="4"
            ref=${bloom1}
            intensity="0.5"
            luminanceThreshold="0.0"
            width="512"
            height="512"
          />
          <${POST.Bloom}
            ref=${bloom2}
            mipmapBlur
            intensity="1.2"
            luminanceThreshold="0.5"
            width="512"
            height="512"
          />
        <//>
      `;
    };

    const TvScreen = (props) => {
      const eegData = [
        -5733.17774929735, -5483.55346722048, -5719.40907471288,
        -5535.29775563452, -5670.65992005586, -5568.11011649491,
        -5620.81552992052, -5594.14989878534, -5571.10525025192,
        -5643.86017845394, -5532.9061189778, -5686.68612083031,
        -5495.44459527071, -5723.74531313721, -5460.28530124251,
        -5750.52270299467, -5447.54480690298, -5771.66745324939,
        -5433.7314288296, -5774.14849688393, -5435.56427187494,
        -5773.38853757245, -5447.88008306981, -5761.85503743351,
        -5459.92767333122, -5742.76664766868, -5490.41545276826,
        -5702.80172858259, -5527.83227298645, -5661.67451878482,
        -5565.45025890473, -5614.28882053957, -5607.6727041808,
        -5567.46191590571, -5635.27710858311, -5519.67388626026,
        -5684.96503650725, -5471.21530428115, -5703.87461231644,
        -5437.77709457601, -5738.05042958861, -5412.92195474171,
        -5749.96390938329, -5406.28348663849, -5745.8064849146,
        -5401.34375111386, -5742.76664766868, -5423.71784731363,
        -5724.12529279295, -5437.285356198, -5688.11663247545,
        -5484.53694397652, -5665.94370197579, -5520.03151417154,
        -5619.58618397548, -5558.87884603487, -5578.19075324425,
        -5619.74264618667, -5525.77591249656, -5660.57928330651,
        -5496.40572028228, -5699.56072563657, -5464.39802222228,
        -5734.09417082002, -5433.75378057406, -5760.60333974401,
        -5419.58277458939, -5763.19614210083, -5415.51475709853,
        -5764.04550839013, -5416.90056525476, -5750.56740648358,
        -5434.15611197425, -5722.71713289227, -5463.70511814417,
        -5703.47228091625, -5498.9985226391, -5658.4335158388,
        -5544.21610167219, -5608.5220704701, -5581.49881142364,
        -5555.07904947747, -5627.20812883474, -5506.01697039807,
        -5671.0398997116, -5480.96066486367, -5715.16224326637,
        -5446.56133014695, -5748.51104599369, -5420.70036181216,
        -5748.28752854914, -5404.29418138196, -5772.71798523879,
        -5401.99195170307, -5759.9104356659, -5415.42535012071,
        -5749.33806053854, -5440.99574577758, -5722.78418812563,
        -5466.02969956752, -5679.17593469333, -5512.67779024575,
        -5636.77467546161, -5551.56982559798, -5593.50169819614,
        -5595.06632030801, -5544.5066743501, -5645.35774533245,
        -5507.02279889855, -5685.47912662973, -5467.50491470157,
        -5720.52666193565, -5435.09488524138, -5743.88423489144,
        -5416.69939955466, -5763.55377001211, -5409.79271051797,
        -5764.98428165725, -5416.8782135103, -5754.94834839682,
        -5429.17167296072, -5736.64226968792, -5459.97237682013,
        -5706.71328386227, -5477.65260668428, -5667.4859723432,
        -5520.41149382728, -5627.18577709029, -5570.65821536281,
        -5585.36566321441, -5620.63671596488, -5540.17043592578,
        -5651.21390237974, -5507.87216518786, -5697.48201340223,
        -5468.01900482404, -5731.03198182964, -5434.26787069653,
        -5753.24961581822, -5420.61095483434, -5766.54890376912,
        -5407.6245913058, -5769.32052008158, -5422.35439090185,
        -5755.64125247494, -5441.77805683351, -5732.77541789716,
        -5463.66041465526, -5699.0466355141, -5506.1510808648,
        -5663.52971357461, -5547.34534589593, -5613.90884088383,
        -5575.0168055316, -5569.42886941777, -5645.7824284771,
        -5541.06450570399, -5688.58601910901, -5497.21038308267,
        -5713.10588277649, -5466.61084492336, -5747.88519714894,
        -5440.21343472164, -5760.93861591084, -5425.14835895876,
        -5770.08047939306, -5425.7295043146, -5757.608205987, -5430.87040553932,
        -5743.45955174679, -5460.37470822033, -5719.36437122397,
        -5479.70896717417, -5685.07679522953, -5517.1034356479,
        -5657.67355652732, -5573.85451481992, -5621.50843399864,
        -5613.7747304171, -5582.52699166858, -5648.62110002292,
        -5536.79532251302, -5685.52383011864, -5506.66517098727,
        -5715.45281594429, -5484.15696432078, -5748.33223203805,
        -5464.15215303328, -5755.86476991949, -5418.59929783336,
        -5755.93182515285, -5451.34460346038, -5765.31955782408,
        -5469.42716472473, -5748.53339773815, -5478.83724914041,
        -5713.19528975431, -5505.72639772015, -5682.841620784,
        -5526.04413343002, -5644.39662032087, -5569.25005546213,
        -5595.89333485286, -5592.78644237357, -5556.08487797795,
        -5627.65516372385, -5517.61752577037, -5658.34410886098,
        -5478.61373169586, -5689.54714412059, -5454.1385715173,
        -5712.5470891651, -5444.48261791261, -5737.51398772168,
        -5443.02975452301, -5740.24090054523, -5439.90051029927,
        -5741.06791509007, -5466.1414582898, -5713.88819383242,
        -5475.86446712786, -5694.66569360086, -5497.65741797178,
        -5651.4821233132, -5530.64859278781, -5624.77178868911,
        -5570.36764268489, -5578.6154363889, -5616.70280894075,
        -5551.39101164234, -5641.82616970851, -5499.13263310583,
        -5676.51607710315, -5461.71581288765, -5701.43827217082,
        -5436.95008003117, -5728.41682772837, -5426.48946362608,
        -5730.98727834073, -5397.94628595666, -5772.5615230276,
        -5508.02862739904, -5868.02582359622, -5646.49768429967,
        -5963.66893812048, -5743.57131046907, -5968.58632190065,
        -5776.33896784055, -5906.33671359262, -5792.83455524857,
        -5831.19014873387, -5777.32244459658, -5728.41682772837,
        -5774.84140096204, -5649.1351901454, -5771.7121567383,
        -5580.31416896751, -5781.4128138319, -5527.72051426417,
        -5791.18052615887, -5490.19193532371, -5791.38169185897,
        -5480.58068520793, -5791.13582266996, -5471.81880138145,
        -5782.26218012121, -5477.49614447309, -5770.2145898598,
        -5497.21038308267, -5738.94449936682, -5520.56795603847,
        -5706.98150479573, -5551.74863955362, -5668.11182118795,
        -5589.27721849408, -5628.10219861295, -5622.06722761002,
        -5573.63099737537, -5663.30619613006, -5536.41534285728,
        -5691.17882146583, -5499.62437148385, -5729.44500797332,
        -5473.65164442678, -5748.08636284904, -5452.66335638325,
        -5743.77247616917, -5446.76249584705, -5760.26806357718,
        -5448.86355982585, -5747.10288609301, -5454.80912385096,
        -5731.45666497429, -5471.72939440363, -5703.38287393843,
        -5501.32310406245, -5668.15652467686, -5541.28802314854,
        -5631.58907074798, -5571.17230548529, -5589.16545977181,
        -5615.29464904006, -5549.58052034146, -5635.72414347221,
        -5539.81280801449, -5721.73365613623, -5516.20936586969,
        -5752.82493267357, -5505.72639772015, -5749.98626112774,
        -5457.60309190787, -5752.62376697347, -5443.23092022311,
        -5756.44591527533, -5451.14343776029, -5734.58590919804,
        -5464.66624315575, -5721.73365613623, -5497.72447320515,
        -5688.47426038674, -5529.1063224204, -5658.72408851672,
        -5556.59896810043, -5626.35876254544, -5587.31026498202,
        -5582.90697132432, -5633.39956204886, -5547.63591857385,
        -5673.11861194594, -5506.82163319846, -5696.7444058352,
        -5466.94612109019, -5713.35175196549, -5446.56133014695,
        -5734.27298477566, -5434.37962941881, -5737.91631912188,
        -5430.66923983923, -5714.46933918826, -5423.89666126927,
        -5715.43046419984, -5434.44668465217, -5678.10305095948,
        -5459.48063844212, -5638.80868420704, -5487.37561552234,
        -5601.14599479985, -5522.33374385044, -5558.38710765685,
        -5561.9633867697, -5519.18214788224, -5608.79029140357,
        -5476.95970260617, -5640.68623074129, -5453.44566743918,
        -5680.40528063837, -5422.62261183531, -5700.87947855943,
        -5388.60325677434, -5708.00968504068, -5382.88121019378,
        -5711.65301938689, -5380.84720144835, -5695.17978372333,
        -5394.50411731054, -5678.8406585265, -5422.66731532423,
        -5654.90194021487, -5458.72067913064, -5620.18968107577,
        -5499.02087438355, -5587.06439579301, -5541.91387199329,
        -5550.45223837522, -5590.86419235041, -5507.31337157647,
        -5623.45303576625, -5468.0413565685, -5660.33341411751,
        -5432.27856544001, -5685.12149871844, -5411.04440820747,
        -5709.55195540809, -5395.88992546677, -5719.38672296843,
        -5394.90644871073, -5715.78809211112, -5401.32139936941,
        -5695.26919070115, -5429.01521074953, -5694.62099011195,
        -5450.94227206019, -5662.79210600759, -5475.68565317221,
        -5623.25187006615, -5513.99654316861, -5568.15481998382,
        -5549.15583719681, -5529.70981952069, -5586.75147137063,
        -5489.61078996787, -5627.25283232365, -5453.15509476126,
        -5667.37421362093, -5419.26985016702, -5686.48495513021,
        -5404.98708546008, -5698.77841458063, -5388.06681490741,
        -5707.83087108503, -5387.70918699613, -5704.9474960503,
        -5393.81121323242, -5693.16812672235, -5409.03275120649,
        -5648.41993432283, -5424.8801380253, -5617.82039616351,
        -5466.96847283464, -5587.06439579301, -5504.16177560828,
        -5543.0091074716, -5554.92258726628, -5496.91981040476,
        -5588.60666616042, -5462.52047568804, -5637.04289639508,
        -5443.00740277856, -5668.42474561033, -5403.53422207048,
        -5682.39458589489, -5382.45652704913, -5695.40330116788,
        -5372.53235251097, -5691.64820809939, -5375.72865196808,
        -5693.07871974453, -5386.83746896237, -5676.44902186978,
        -5411.51379484103, -5642.40731506435, -5444.75083884607,
        -5606.37630300239, -5469.27070251354, -5572.58046538597,
        -5508.22979309914, -5505.16760410876, -5540.55041558151,
        -5461.7381646321, -5576.84964857693, -5419.98510598959,
        -5610.19845130425, -5384.28937009446, -5636.88643418389,
        -5359.27776804897, -5659.97578620622, -5345.82201788688,
        -5668.22357991023, -5340.54700619543, -5663.70852753026,
        -5337.86479686079, -5652.7338210027, -5367.63732047526,
        -5633.46661728223, -5393.05125392094, -5614.04295135056,
        -5431.74212357308, -5569.27240720658, -5471.57293219244,
        -5530.69329627672, -5515.24824085811, -5492.91884814726,
        -5558.11888672339, -5452.32808021642, -5600.18486978827,
        -5427.40588514875, -5652.57735879151, -5424.29899266946,
        -5713.21764149876, -5445.37668769082, -5817.84615729405,
        -5537.37646786886, -5893.08212913062, -5593.59110517396,
        -5934.7010773064, -5622.60366947695, -5914.67391427444,
        -5613.01477110562, -5864.06956482763, -5618.31213454153,
        -5805.91032575492, -5619.49677699766, -5725.51110094918,
        -5629.7785794471, -5651.75034424667, -5642.96610867573,
        -5578.83895383346, -5652.01856518013, -5516.85756645889,
        -5670.41405086685, -5465.47090595614, -5691.11176623246,
        -5429.97633576111, -5703.00289428269, -5397.38749234527,
        -5709.39549319691, -5390.16787888621, -5710.17780425284,
        -5380.82484970389, -5695.44800465679, -5389.18440213018,
        -5668.62591131042, -5407.35637037234, -5624.63767822238,
        -5426.3330014149, -5588.67372139379, -5461.291129743, -5547.47945636266,
        -5499.1996883392, -5507.44748204321, -5541.06450570399,
        -5465.91794084525, -5582.79521260205, -5416.98997223258,
        -5612.63479144988, -5390.41374807522, -5630.71735271422,
        -5356.2155790586, -5652.62206228042, -5336.59074742684,
        -5658.16529490534, -5336.36722998229, -5659.90873097286,
        -5339.45177071712, -5644.03899240959, -5358.40605001522,
        -5624.68238171129, -5383.79763171645, -5594.52987844108,
        -5415.53710884298, -5548.37352614087, -5463.79452512199,
        -5513.32599083495, -5500.60784823988, -5472.13172580382,
        -5538.09172369143, -5433.70907708515, -5571.70874735221,
        -5391.03959691997, -5604.78932914607, -5363.27873030647,
        -5631.74553295917, -5343.89976786372, -5650.99038493519,
        -5333.4615032031, -5652.97969019171, -5336.72485789357,
        -5652.91263495834, -5348.72774466607, -5636.01471615013,
        -5367.50321000853, -5605.39282624636, -5390.05612016393,
        -5580.24711373414, -5423.11435021333, -5535.38716261234,
        -5459.52534193103, -5502.55245000749, -5503.24535408561,
        -5455.85965584036, -5529.53100556505, -5399.80148074645,
        -5581.63292189037, -5376.24274209055, -5601.43656747777,
        -5345.35263125332, -5619.56383223103, -5331.69571539113,
        -5628.61628873543, -5312.003828526, -5623.29657355506,
        -5310.68507560314, -5620.12262584241, -5321.41391294168,
        -5601.3248087555, -5343.1621602967, -5569.04888976203,
        -5372.13002111078, -5538.47170334717, -5402.88602148128,
        -5491.62244696885, -5442.73918184509, -5451.94810056068,
        -5485.96745562166, -5416.72175129911, -5528.12284566436,
        -5382.9706171716, -5561.85162804742, -5345.44203823114,
        -5580.98472130117, -5312.87554655976, -5599.08963430996,
        -5297.96693300807, -5602.35298900044, -5291.48492711603,
        -5608.41031174783, -5300.89501153171, -5600.87777386639,
        -5320.92217456367, -5588.80783186052, -5346.22434928708,
        -5556.55426461152, -5377.89677118025, -5518.71276124868,
        -5413.45839660864, -5477.80906889547, -5459.8382663534,
        -5443.6332516233, -5502.01600814057, -5405.00943720453,
        -5526.31235436348, -5363.83752391786, -5584.00220680263,
        -5353.19809355713, -5604.7222739127, -5327.85121534481,
        -5619.36266653093, -5310.41685466967, -5622.84953866596,
        -5312.16029073719, -5615.78638741808, -5316.92121230617,
        -5601.16834654431, -5334.82495961487, -5575.88852356536,
        -5359.12130583779, -5546.96536624019, -5386.92687594019,
        -5501.32310406245, -5424.43310313619, -5466.76730713455,
        -5478.5913799514, -5442.62742312281, -5548.0606017185,
        -5456.37374596283, -5651.12449540192, -5509.43678729973,
        -5770.57221777108, -5582.03525329056, -5875.35719577756,
        -5605.59399194646, -5899.16180362246, -5582.07995677948,
        -5885.97427439383, -5558.63297684586, -5842.18720700588,
        -5529.37454335386, -5793.19218315985, -5517.19284262572,
        -5725.3993422269, -5501.61367674037, -5650.27512911262,
        -5515.2035373692, -5599.96135234372, -5533.7554852671,
        -5540.43865685924, -5566.32197693848, -5496.98686563812,
        -5594.50752669663, -5448.59533889238, -5620.39084677587,
        -5409.14450992877, -5645.15657963235, -5376.75683221303,
        -5659.84167573949, -5350.89586387823, -5650.23042562371,
        -5338.06596256089, -5653.24791112517, -5345.7102591646,
        -5650.34218434598, -5354.06981159089, -5615.00407636214,
        -5373.9181606672, -5579.35304395593, -5395.91227721122,
        -5533.59902305592, -5433.48555964059, -5501.88189767383,
        -5476.2444467836, -5456.64196689629, -5517.01402867008,
        -5414.08424545339, -5552.30743316501, -5371.3700617993,
        -5572.55811364151, -5345.39733474223, -5602.30828551153,
        -5320.96687805258, -5620.0779223535, -5311.64620061472,
        -5626.73874220118, -5308.47225290206, -5619.51912874212,
        -5312.42851167065, -5604.85638437943, -5330.1087415348,
        -5580.24711373414, -5356.81907615889, -5551.77099129808,
        -5395.97933244459, -5519.69623800471, -5442.44860916717,
        -5476.46796422815, -5475.14921130529, -5432.30091718446,
        -5520.54560429402, -5394.45941382163, -5539.72340103667,
        -5361.95997738361, -5587.48907893766, -5321.07863677485,
        -5593.92638134079, -5285.248790413, -5605.16930880181,
        -5284.51118284597, -5616.00990486263, -5289.20504918159,
        -5593.85932610742, -5297.0505114854, -5575.19561948724,
        -5321.41391294168, -5543.52319759407, -5346.20199754262,
        -5516.20936586969, -5383.86468694981, -5474.94804560519,
        -5420.8791757678, -5426.91414677073, -5458.85478959737,
        -5390.10082365284, -5502.28422907403, -5349.53240746646,
        -5523.33957235093, -5304.76186332248, -5558.92354952378,
        -5283.90768574568, -5581.40940444582, -5266.56273204836,
        -5585.03038704758, -5260.41600232315,
      ];

      const indexx = useRef(0);

      useFrame(() => {
        indexx.current++;
        if (eegData[indexx.current] < -5900) {
          matRef.current.material.uniforms.brainColor.value = new Vector3(
            Math.random(),
            Math.random(),
            Math.random()
          );
        }

        if (indexx.current > eegData.length) {
          indexx.current = 0;
        }
      });

      const matRef = useRef();

      useFrame(({
        clock
      }) => {
        if (matRef.current?.material?.uniforms) {
          matRef.current.material.uniforms.time.value = clock.getElapsedTime();
        }
      });

      const tex1 = drei2.useTexture(
        'data:image/webp;base64,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'
      );
      const tex2 = drei2.useTexture(
        'data:image/webp;base64,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'
      );
      const tex3 = drei2.useTexture(
        'data:image/webp;base64,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'
      );

      useEffect(() => {
        tex1.flipY = false;
        tex1.encoding = THREE.sRGBEncoding;
        tex1.needsUpdate = true;
        tex2.flipY = false;
        tex2.encoding = THREE.sRGBEncoding;
        tex2.needsUpdate = true;
        tex3.flipY = false;
        tex3.encoding = THREE.sRGBEncoding;
        tex3.needsUpdate = true;
      }, [tex1, tex2, tex3]);

      // load file
      const gltf = useDracoGLTF(
        '/content/4dd1dbc7697b13cbd3e6e143eb799228c566dd78a833689ab75c1804136b08b0i0'
      );

      useEffect(() => {}, [gltf]);

      // display placeholder until ready
      if (!gltf) {
        return null;
      } else {
        return html` <group
          rotation=${props.rotation}
          position=${props.position}
          scale=${props.scale}
          rotation=${props.rotation}
        >
          <mesh ref=${matRef} geometry=${gltf.scene.children[0].geometry}>
            <shaderMaterial
              uniforms=${{
                brainColor: { value: new Vector3(1, 0, 0) },
                tex1: { value: tex1 },
                tex2: { value: tex2 },
                tex3: { value: tex3 },
                time: { value: 0 },
                color: { value: color },
                channelOffset: { value: (0 * Math.PI) / 8 },
              }}
              vertexShader=${`
              uniform float channelOffset;
              varying vec2 vUv;
              varying vec3 vPos;

              void main() {
                  vUv = uv;
                  vec3 pos = position;
                  vPos = pos;
                  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
              }`}
              fragmentShader=${`
                                ${window.shaderNoise}
              varying vec2 vUv;
              varying vec3 vPos;
              uniform vec3 brainColor;

              uniform sampler2D tex1;
              uniform sampler2D tex2;
              uniform sampler2D tex3;

              uniform float time;



          void main() {
          vec3 vPoss = vPos;
          vPoss.x += fract(sin(fract(time * 6. * cos(time * 0.4)))) * 0.02 * sin(time);
          vPoss.z += fract(sin(fract(time * 4. * sin(time * 0.1)))) * 0.02 * sin(time);

          float dist = distance(vec3(0.), vPos.xyz);

        vec4 pic1 = texture2D(tex1, vPoss.xz * 0.42 + 0.5);
        vec4 pic2 = texture2D(tex2, vPoss.xz * 0.42 + 0.5);
        vec4 pic3 = texture2D(tex3, vPoss.xz * 0.42 + 0.5);

          vec3 c = vec3(0.0, 0.0, 0.0);


          c = mix(pic3.rgb, pic2.rgb, sin(time * 1.3));

          c = mix(c, pic1.rgb, cos(time * 0.5)) * brainColor * 2.;

          c += sin(time * 2.) * 0.04 * snoise(vPos.xz * 88. + sin(time)) * cos(time * 0.3);

          c.rb += snoise(vPos.xz * 5. + time * dist) * 0.02;
          c.rb += snoise(vPos.xz * 8. - time * dist) * 0.02;


        // c *= snoise(vPos.xz / vPos.yy  * 22.);


              gl_FragColor = vec4(c, 1.0);
          }`}
              side=${THREE.DoubleSide}
              transparent=${true}
              depthWrite=${true}
              wireframe=${false}
            />
          </mesh>
          <mesh geometry=${gltf.scene.children[1].geometry}>
            <shaderMaterial
              uniforms=${{
                time: { value: 0 },
                color: { value: color },
                channelOffset: { value: (0 * Math.PI) / 8 },
              }}
              vertexShader=${`
                                uniform float time;
              uniform float channelOffset;
              varying vec2 vUv;
              varying vec3 vPos;

              void main() {
                  vUv = uv;
                  vec3 pos = position;
                  vPos = pos;
                  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
              }`}
              fragmentShader=${`
                                ${window.shaderNoise}
              varying vec2 vUv;
              varying vec3 vPos;

          void main() {

          vec3 c = vec3(0.4, 0.1, 0.8);

        c *= snoise(vPos.xz  * 6.) + 1.1;
        c *= snoise(vPos.zy * vPos.xy  * 4.) + 1.1;
        c *= snoise(vPos.yy * 5.) + 1.1;


              gl_FragColor = vec4(c, 1.0);
          }`}
              side=${THREE.DoubleSide}
              transparent=${true}
              depthWrite=${true}
              wireframe=${false}
            />
          </mesh>
        </group>`;
      }
    };

    const Canvas = (props) => {
      const blobRef = useRef();

      useEffect(() => {
        window.blobRef = blobRef;
      }, []);

      return html`
            <${Fiber.Canvas} ...${props}
            gl=${{ precision: 'highp' }}
            camera=${{
              zoom: 2,
              fov: 40,
              near: 1,
              far: 600000,
              position: [0, 0.3, 35],
            }} >
              <${Suspense}>

                <ambientLight intensity="1"/>
                <${Cam} />
                  <${SceneComposer} hidePlayButton audioUrl=${audioUrl}>
                    <color attach="background" args=${['black']}/>
                    <group ...${hoverEvents}>
                    <${Postprocessing} />



                  <${SolarSystem} scale=${[1, 1, 1]} />
                  <${SolarSystem} scale=${[3000, 3000, 3000]} />
                  <group position=${[0, 0, -2400000]}>
                    <group postition=${[40, 0, 0]}>
                  <${TvScreen} scale=${[4444, 4444, 4444]} position=${[
        0, 0, -64000,
      ]} rotation=${[Math.PI / 2, 0, 0]} />
          <${TvScreen} scale=${[4444, 4444, 4444]} position=${[
        16000, 0, -32000,
      ]} rotation=${[Math.PI / 2, 0, 0]} />
          <${TvScreen} scale=${[4444, 4444, 4444]} position=${[
        -16000, 0, -32000,
      ]} rotation=${[Math.PI / 2, 0, 0]} />
                  </group>
                  </group>

                  <pointLight
                    intensity=${1000}
                    position=${[20, 20, 0]}
                    decay=${1}
                    power=${1000}
                    shadow=${true}
                    color=${'purple'}
                  />
                  <group ref=${blobRef} scale=${[1, 1, 1]}>
                    <${Bloberson} scale=${[1500, 1500, 1500]} />
                    <${Bloberson} scale=${[80000, 80000, 80000]} />
                  </group>
                  <group scale=${[1, 1, 1]}>
                    <${Book}
              position=${[0, -7, 0]}
              scale=${[1, 1, 1]}
              rotation=${[Math.PI / 8, -Math.PI / 8, 0]} />
              </group>
              <group scale=${[1500, 1500, 1500]}>

                  <${EEGWavePlane}
                  position=${[0, 0, -840]}
                  segments=${30}
                  frag=${tunnelShaders.frag.lsd} vert=${
        tunnelShaders.vert.eegwave
      } />
                  <${EEGWavePlane}
                  position=${[0, 0, -1000]}
                  segments=${30}
                  frag=${tunnelShaders.frag.slots}
                  vert=${tunnelShaders.vert.eegwave} />
                  <${EEGWavePlane}
                  position=${[0, 0, -1250]}
                  segments=${30}
                  frag=${tunnelShaders.frag.neon} vert=${
        tunnelShaders.vert.eegwave
      } />
          </group>



                  </group>
                  <//>
                <//>
                      </${Fiber.Canvas}>
                      `;
    };

    ReactDOM.render(
      html`
        <div
          style=${{
            display: 'flex',
            flexDirection: 'column',
            height: '100%',
            width: '100%',
          }}
        >
          <${Canvas} />
        </div>
      `,
      document.getElementById('root')
    );
    window.scenes = [{
        name: 'start',
        time: [0.0, 15],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(start), true);
        },
        onEnd: () => {},
        onFrame: (state, dt) => {},
      },
      {
        name: 'scene1',
        time: [15, 25],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene1), true);
        },
        onEnd: () => {},
        onFrame: (state, dt) => {},
      },
      {
        name: 'scene2',
        time: [25, 30],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene2), true);
        },
        onEnd: () => {
          tunnelStore.set({
            active: true
          });
        },
        onFrame: (state, dt) => {},
      },
      {
        name: 'scene3',
        time: [30, 40],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene3), true);
        },
        onEnd: () => {},
        onFrame: (state, dt) => {},
      },
      {
        name: 'scene4',
        time: [40, 50],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene2), true);
        },
        onEnd: () => {},
        onFrame: (state, dt) => {},
      },

      {
        name: 'scene5',
        time: [50, 80],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene1), true);
        },
        onEnd: () => {
          tunnelStore.set({
            active: false
          });
        },
        onFrame: (state, dt) => {},
      },
      {
        name: 'scene6',
        time: [80, 85],
        onStart: async () => {
          window.cam.fromJSON(JSON.stringify(scene6), true);
        },
        onEnd: () => {},
        onFrame: (state, dt) => {},
      },
    ];
  </script>
</head>
  • ID

    7d0a2...ec1i0

  • Owned By
  • File Type

    HTMLtext/html;charset=utf-8

  • File Size

    57.441 KB

  • Created

    May 5, 2024, 7:24 AM UTC

    331 days ago

  • Creation Block
  • Creation Transaction
  • Creation Fee

    2,227,050sats

  • Tags

    No tags yet

Sat

Recursive Modules

Parent Inscription