import * as React from "react"; import AugmentedRealityHitTest from "./AugmentedRealityHitTest"; import { action } from "@storybook/addon-actions"; import { GltfImage } from "../types"; export default { component: AugmentedRealityHitTest, title: "AugmentedRealityHitTest", parameters: { componentSubtitle: "Immersive augmented reality view that reacts to hit tests", }, }; const availableImages = { sunflower: { title: "Sunflower", src: "sunflower/sunflower.gltf", includeShadow: true }, waterbottle: { title: "Water bottle", src: "waterbottle/WaterBottle.gltf" }, man: { title: "Cesium man", src: "cesiumman/CesiumMan.gltf" }, }; type SelectedImage = "sunflower" | "waterbottle" | "man"; export const Default = () => { const [selectedImage, setSelectedImage] = React.useState( Object.keys(availableImages)[0] as SelectedImage, ); const [images, setImages] = React.useState([]); const imageIndexRef = React.useRef(0); const onImageSelected = (ev: React.ChangeEvent) => setSelectedImage(ev.target.value as SelectedImage); const onHitTestSelect = (matrix: Float32Array) => { imageIndexRef.current = imageIndexRef.current + 1; const image = availableImages[selectedImage]; setImages([ ...images, { matrix, ...image, key: imageIndexRef.current.toString(), }, ]); }; return ( <> ); }; export const WithInvisibleTarget = () => ( ); export const WithCustomTargetImage = () => ( );