From 7b5b20cfd2c27da66f570d54cf189cf5d7500e69 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Mon, 13 Oct 2025 09:54:04 -0700 Subject: [PATCH 1/4] Deform the mesh on drag/zoom. --- app/src/components/meme-selector.tsx | 22 ++- app/src/room/broadcast.ts | 30 +++++ app/src/room/gl/border.ts | 88 ++++++------ app/src/room/gl/border.vert | 45 ++++++- app/src/room/gl/broadcast.ts | 109 +++++++-------- app/src/room/gl/broadcast.vert | 46 ++++++- app/src/room/gl/mesh.ts | 194 +++++++++++++++++++++++++++ app/src/room/gl/outline.ts | 90 +++++++------ app/src/room/gl/outline.vert | 46 ++++++- app/src/room/space.ts | 65 +++++++-- moq | 2 +- 11 files changed, 565 insertions(+), 172 deletions(-) create mode 100644 app/src/room/gl/mesh.ts diff --git a/app/src/components/meme-selector.tsx b/app/src/components/meme-selector.tsx index e88cef80..7686569a 100644 --- a/app/src/components/meme-selector.tsx +++ b/app/src/components/meme-selector.tsx @@ -117,7 +117,12 @@ export function MemeSelector(props: MemeSelectorProps): JSX.Element { setPlayingAudioMeme(null); if (type === "audio") { - const audio = new Audio(new URL(`/meme/${MEME_AUDIO[memeName as keyof typeof MEME_AUDIO].file}`, import.meta.env.VITE_APP_URL).toString()); + const audio = new Audio( + new URL( + `/meme/${MEME_AUDIO[memeName as keyof typeof MEME_AUDIO].file}`, + import.meta.env.VITE_APP_URL, + ).toString(), + ); audio.volume = 0.5; // Lower volume for preview audio.play(); setPreviewAudio(audio); @@ -131,7 +136,10 @@ export function MemeSelector(props: MemeSelectorProps): JSX.Element { } else { // For video, play with sound const video = document.createElement("video"); - video.src = new URL(`/meme/${MEME_VIDEO[memeName as keyof typeof MEME_VIDEO].file}`, import.meta.env.VITE_APP_URL).toString(); + video.src = new URL( + `/meme/${MEME_VIDEO[memeName as keyof typeof MEME_VIDEO].file}`, + import.meta.env.VITE_APP_URL, + ).toString(); video.volume = 0.5; video.style.display = "none"; document.body.appendChild(video); @@ -310,7 +318,10 @@ export function MemeSelector(props: MemeSelectorProps): JSX.Element {
{/* Thumbnail background */} {meme}