From c0728d27bfec00e65f15462b57e2a93bc1969949 Mon Sep 17 00:00:00 2001 From: Kris Baumgartner Date: Wed, 8 Apr 2026 10:44:40 -0400 Subject: [PATCH 1/2] Remove dead files, use ShieldMaterial --- demos/flow-shield/src/App.jsx | 76 ++++++++++++++- .../src/components/ForceShield/index.tsx | 19 ++-- .../components/ForceShield/shaderMaterial.ts | 93 ++++++++++--------- .../src/components/playground/DemoSphere.tsx | 26 ------ .../playground/PlaygroundCanvas.tsx | 80 ---------------- .../src/react-three-fiber-jsx.d.ts | 9 ++ 6 files changed, 138 insertions(+), 165 deletions(-) delete mode 100644 demos/flow-shield/src/components/playground/DemoSphere.tsx delete mode 100644 demos/flow-shield/src/components/playground/PlaygroundCanvas.tsx diff --git a/demos/flow-shield/src/App.jsx b/demos/flow-shield/src/App.jsx index 69a9c66a..cb288ec6 100644 --- a/demos/flow-shield/src/App.jsx +++ b/demos/flow-shield/src/App.jsx @@ -1,5 +1,77 @@ -import PlaygroundCanvas from './components/playground/PlaygroundCanvas' +import { useCallback, useRef, useState } from 'react' +import { Canvas } from '@react-three/fiber' +import { Leva, useControls } from 'leva' +import SceneContent from './components/playground/SceneContent' +import UIOverlay from './components/overlay/UIOverlay' +import OverlayButtons from './components/overlay/OverlayButtons' +import LoadingOverlay from './components/overlay/LoadingOverlay' +import { LEVA_THEME } from './components/theme/theme' export default function App() { - return + const [showGrid, setShowGrid] = useState(true) + const [hideLeva, setHideLeva] = useState(false) + const [glbUrl, setGlbUrl] = useState(null) + const [preset, setPreset] = useState('default') + const [isLoadingModel, setIsLoadingModel] = useState(false) + const glbUrlRef = useRef(null) + + const handleLoadGlb = useCallback((file) => { + if (glbUrlRef.current) URL.revokeObjectURL(glbUrlRef.current) + const url = URL.createObjectURL(file) + glbUrlRef.current = url + setIsLoadingModel(true) + setGlbUrl(url) + }, []) + + const handleModelLoaded = useCallback(() => { + setIsLoadingModel(false) + }, []) + + const handleClearGlb = useCallback(() => { + if (glbUrlRef.current) URL.revokeObjectURL(glbUrlRef.current) + glbUrlRef.current = null + setGlbUrl(null) + }, []) + + const { mode } = useControls( + 'Scene', + { + mode: { + value: 'Background', + options: ['Background', 'Frame'], + label: 'Mode' + } + }, + { collapsed: true } + ) + + return ( + <> +