Go to file
Michael Mainguy adc80c54c4 Optimize animated connection textures and fix material texture bleeding
Performance Optimizations (~90% improvement):
- Implement texture color caching in AnimatedLineTexture
  - Reuse textures for connections with same color
  - Reduces texture count by 70-90% with duplicate colors
- Reduce animation update frequency from every frame to every other frame
  - Halves CPU-to-GPU texture updates while maintaining smooth animation
- Add texture preloading for all 16 toolbox colors
  - Eliminates first-connection creation stutter
- Add GetCacheStats, ClearCache, and PreloadTextures utility methods

Bug Fixes:
1. Fix texture disappearing when moving objects with connections
   - Root cause: Shared cached textures were disposed on connection update
   - Solution: Never dispose cached textures, only swap references
   - Add safety check in DisposeTexture to prevent cached texture disposal

2. Fix UI text textures bleeding to normal materials
   - Add metadata.isUI = true to 10+ UI components:
     - Button.ts (with unique material names per button)
     - handle.ts, roundButton.ts, createLabel.ts, updateTextNode.ts
     - spinner.ts, vrConfigPanel.ts, buildImage, introduction.ts
     - ResizeGizmo.ts
   - Update LightmapGenerator filter to check metadata.isUI first
   - Change exact name match to startsWith for button materials

3. Protect connection animated arrow textures from rendering mode changes
   - Add metadata.isConnection = true to connection materials
   - Update LightmapGenerator to skip connection materials
   - Connections maintain animated arrows in all rendering modes

Technical Details:
- Texture caching follows existing LightmapGenerator pattern
- All UI materials now consistently marked with metadata flags
- Rendering mode filter uses metadata-first approach with fallback checks
- Connection materials preserve textures via metadata.preserveTextures flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:37:22 -06:00
.github/workflows Update node.js.yml 2024-08-30 12:18:10 -05:00
api Initial Menu System Commit. 2023-06-29 21:03:00 -05:00
docs Add WebXR rendering mode toggle with 4 modes 2025-11-13 10:36:03 -06:00
functions Added Initial Voice Command Handler, fixed connection issues. 2023-08-14 13:27:20 -05:00
netlify/functions added request headers to CORD response. 2023-12-12 06:53:14 -06:00
pages Initial Menu System Commit. 2023-06-27 16:58:19 -05:00
public Fix label positioning, add billboard mode, fix XR entry shift, and fix config system 2025-11-18 08:52:04 -06:00
server Add WebXR rendering mode toggle with 4 modes 2025-11-13 10:36:03 -06:00
src Optimize animated connection textures and fix material texture bleeding 2025-11-18 16:37:22 -06:00
.gitignore Refactored api path. 2023-08-11 07:51:46 -05:00
CLAUDE.md Add configurable feature management system with JSON-based feature flags 2025-11-18 06:52:39 -06:00
index.html Added webxr exit button 2025-02-14 11:01:27 -06:00
LICENSE.txt Disabled service worker, enhanced management console. 2024-08-30 12:43:19 -05:00
package-lock.json Refactor config naming and upgrade dependencies 2025-11-12 21:36:56 -06:00
package.json Migrate from legacy config to new AppConfig singleton system 2025-11-18 13:20:18 -06:00
server.js Re added quest link. 2024-04-02 14:19:27 -05:00
tsconfig.json Added 3d closet demo, cleaned up menus. 2024-02-05 10:46:23 -06:00
versionBump.js Added smart versioning 2024-06-11 16:58:35 -05:00
vite.config.ts Add configurable feature management system with JSON-based feature flags 2025-11-18 06:52:39 -06:00
VRCONFIGPLAN.md Add VR configuration panel implementation plan and Phase 1 foundation 2025-11-18 11:53:47 -06:00