# Project export: HomeDecorAR

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: Cal Hacks 11.0
- Tagline: We are developing an AR app using Spectacles for home decor, enabling users to place virtual furniture in their space while detecting the dimensions of real objects and furniture in real-time.
- Devpost: https://devpost.com/software/homedecorar
- GitHub: https://github.com/MohamedHAbdelnaby/HomeDecorAR
- Team: 1 GitHub contributor(s) — Mohamed Abdelnaby (2 commits)

## Devpost submission (written by the team)

### Inspiration

We're participating in the SnapAR Challenge at CalHacks, inspired by the potential of AR technology to revolutionize home decor. We wanted to create a tool that helps users visualize furniture placement and make design decisions interactively using Spectacles.

### What it does

HomeDecorAR allows users to place virtual furniture in their space through Spectacles AR glasses. It detects real furniture in the environment, displaying their dimensions in real time, giving users a seamless and immersive way to plan and visualize their home layout.

### How we built it

We used Lens Studio, integrating the World Tracking Planes API to detect surfaces and display dimensions. We combined 3D models for virtual furniture and linked them to interactive touch points within Spectacles, allowing users to place and arrange items dynamically.

### Challenges we ran into

Setting up accurate surface detection and integrating real-time dimension display was challenging. Ensuring that the AR furniture aligns perfectly with the environment and works consistently across various lighting and surface conditions required numerous adjustments.

### Accomplishments we're proud of

We're proud of creating a seamless AR experience that integrates virtual and real furniture while providing accurate dimension measurements. Our app offers an engaging and interactive way for users to plan their home decor.

### What we learned

We gained deeper knowledge in AR development, particularly in optimizing for hardware like Spectacles. We also learned about the intricacies of combining real-time object detection and dimension display in AR environments.

### What's next

We plan to enhance HomeDecorAR by adding more customization options, such as different furniture styles and color schemes, and further optimizing object detection for improved accuracy across varied environments.

## README (from the GitHub repository)

# HomeDecorAR

## Detected evidence (automated analysis)

Indexed codebase: 164 recognized source files, 1470 KB.
- JavaScript (language) — detected in the code
- TypeScript (language) — detected in the code

## Codebase structure (from repository index)

### Files (120 of 640)

```
.gitignore
FurnitureLatest/Assets/Device Camera Texture.deviceCameraTexture
FurnitureLatest/Assets/Device Camera Texture.deviceCameraTexture.meta
FurnitureLatest/Assets/Echopark.hdr
FurnitureLatest/Assets/Echopark.hdr.meta
FurnitureLatest/Assets/furnitureDetectionArea.js
FurnitureLatest/Assets/furnitureDetectionArea.js.meta
FurnitureLatest/Assets/Home Pack/.hidden/bin.ss_graph
FurnitureLatest/Assets/Home Pack/.hidden/bin.ss_graph.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Material/bin.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Material/bin.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_bin_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_bin_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_lid_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_lid_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Material/chair.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Material/chair.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Meshes/Box001.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Meshes/Box001.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Material/cooking_table.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Material/cooking_table.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Meshes/Labtable.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Meshes/Labtable.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Material/countertop_empty.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Material/countertop_empty.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Meshes/C_countertop_empty_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Meshes/C_countertop_empty_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Materials/desk_MAT.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Materials/desk_MAT.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/C_desk_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/C_desk_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer1_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer1_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer2_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer2_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer3_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer3_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer4_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer4_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer5_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer5_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer6_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer6_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Material/ketchup_table.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Material/ketchup_table.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Meshes/C_ketchupTable_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Meshes/C_ketchupTable_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Material/nightstand.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Material/nightstand.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_drawer_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_drawer_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_nightstand_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_nightstand_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Material/picture_frame.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Material/picture_frame.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_frame_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_frame_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_picture_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_picture_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Material/sofa.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Material/sofa.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Meshes/C_sofa_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Meshes/C_sofa_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Material/stool_wooden.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Material/stool_wooden.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Meshes/C_stool_wooden_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Meshes/C_stool_wooden_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Material/stool.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Material/stool.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Meshes/C_stool_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Meshes/C_stool_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Material/table_dining.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Material/table_dining.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Meshes/C_Labtable_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Meshes/C_Labtable_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Materials/table_medium.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Materials/table_medium.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/C_table_cloth_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/C_table_cloth_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/C_table_top_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/C_table_top_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg1_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg1_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg2_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg2_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg3_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg3_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg4_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table_medium/Meshes/table_leg4_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table/Material/labtable.mat
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table/Material/labtable.mat.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table/Meshes/C_Labtable_GEO.mesh
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Meshes/table/Meshes/C_Labtable_GEO.mesh.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/bin_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/chair_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/cooking_table_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/countertop_empty_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/desk_prop_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/ketchup_table_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/nightstand_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/picture_frame_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/sofa_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/stool_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/stool_wooden_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/table_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/table_dining_color.png.meta
FurnitureLatest/Assets/Home Pack/Bitmoji Home Pack Resources/Textures/table_medium_color.png.meta
FurnitureLatest/Assets/Home Pack/BitmojiHome__PLACE_IN_OBJECTS_PANEL.prefab
FurnitureLatest/Assets/Home Pack/BitmojiHome__PLACE_IN_OBJECTS_PANEL.prefab.meta
FurnitureLatest/Assets/Render Target.renderTarget
FurnitureLatest/Assets/Render Target.renderTarget.meta
FurnitureLatest/Assets/Scene.scene
FurnitureLatest/Assets/Scene.scene.meta
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Audio/HoverAudioTrack.wav.meta
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Audio/TriggerEndAudioTrack.wav.meta
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Audio/TriggerStartAudioTrack.wav.meta
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Materials/BaseHandVisualsMaterials/PaintedGlow_Left.mat
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Materials/BaseHandVisualsMaterials/PaintedGlow_Left.mat.meta
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Materials/BaseHandVisualsMaterials/PaintedGlow_Right.mat
FurnitureLatest/Assets/SpectaclesInteractionKit/Assets/Materials/BaseHandVisualsMaterials/PaintedGlow_Right.mat.meta
[520 more files omitted for size]
```

### Dependencies

No dependency index available.

### Recent commits (newest first)

- Final
- Initial commit

## Key source files (fetched from GitHub, selected and truncated for size)

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_InspectorPanel_780d9164-e681-4de1-b586-5213ed5523b9.yaml

```yaml
PinnedEntities:
  type: "std::vector<class Es::Uuid,class std::allocator<class Es::Uuid> >"
  value:
    size: 0
  options: 4

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_SceneEditor_a14d85d7-9a15-42a6-913e-3f24dea267c2.yaml

```yaml
PinnedEntities:
  type: "std::vector<class Es::Uuid,class std::allocator<class Es::Uuid> >"
  value:
    size: 0
  options: 4

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Core_AssetBrowserService.yaml

```yaml
ExternalSources:
  type: "std::map<class Es::Uuid,class Es::Path,struct std::less<class Es::Uuid>,class std::allocator<struct std::pair<class Es::Uuid const ,class Es::Path> > >"
  value:
    []
  options: 4

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_LoggerPanel_81de965d-0c94-4d28-82cf-901740003a1f.yaml

```yaml
clearOnReset:
  type: bool
  value: false
  options: 4
filterWildcard:
  type: string
  value: ""
  options: 4
fontSizeIncrease:
  type: int
  value: 0
  options: 4
groupMessages:
  type: bool
  value: true
  options: 4
messageOriginFlags:
  type: int
  value: 15
  options: 4
severitiesFilter:
  type: intset
  value:
    size: 5
    values:
      - 0
      - 1
      - 2
      - 3
      - 4
  options: 4
timestampsVisible:
  type: bool
  value: true
  options: 4

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_PreviewPanel_52fc2a95-41a3-427b-a138-1e00eb1c405e.yaml

```yaml
backCameraMultimedia:
  type: string
  value: PreviewResources.bundle/Video/World/Beach.mp4
  options: 4
cameraType:
  type: int
  value: 0
  options: 4
customSources:
  type: pathset
  value:
    size: 0
  options: 4
deviceType:
  type: string
  value: Unknown
  options: 4
frameRate:
  type: int
  value: 30
  options: 4
frontCameraMultimedia:
  type: string
  value: PreviewResources.bundle/Video/Idle/Idle.mp4
  options: 4
fullscreenSpectaclesSimulation:
  type: bool
  value: false
  options: 4
lastPosition:
  type: vec3
  value: {x: 0.000000, y: 0.000000, z: 57.000000}
  options: 4
lastRotation:
  type: vec3
  value: {x: 0.000000, y: 0.000000, z: 0.000000}
  options: 4
mirrorHorizontally:
  type: bool
  value: false
  options: 4
previewSource:
  type: string
  value: "C:/Program Files/Snap Inc/Lens Studio/InteractiveResources.bundle/Scenes/Sunlit Room"
  options: 4
previewType:
  type: string
  value: Interactive
  options: 4
recordInput:
  type: bool
  value: false
  options: 4
recordTrackingData:
  type: bool
  value: false
  options: 4
simulatedDevice:
  type: string
  value: Spectacles (2024)
  options: 4
stereoEye:
  type: string
  value: Center
  options: 4

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_SceneHierarchyEditor_6778142c-0629-4c2a-afc3-92a65ce29e1a.yaml

```yaml
CollapsedEntities:
  type: stringset
  value:
    size: 38
    values:
      - 0005641c-028d-459a-0000-000000014b4d
      - 04b9feda-285b-48fd-a7b0-75b96b26dd20
      - 135eb685-af45-4290-8a14-d57770d806b8
      - 1cbcaec7-11b1-4d94-9b1b-ccf7023531a3
      - 1da7f812-08b9-4c7b-9b8b-996de47227b9
      - 21866a4d-a99b-496f-8d5c-a7ef9412943e
      - 21a3f35c-23e5-4c51-8c9c-3b476f4143c0
      - 2e3ccea7-c319-4afe-97bb-1311d1c390e6
      - 314dfe2a-5f35-484f-bd4a-10f3522322aa
      - 3d5abc20-ecc7-43a9-a9a8-0bbbeb0a0417
      - 430ada45-8398-45f6-a513-8cb02465f6f9
      - 4fc59a56-c95f-4baa-8fce-d91f5cf51c0f
      - 5772ff9e-cf87-4b10-8d74-d9329635251a
      - 6035e576-d377-42df-b77f-2d2adbf076fe
      - 630acbf1-dda0-43f8-b81d-43bd2ff24360
      - 65119375-c44f-4915-a239-b0036b65f3c0
      - 6ca676f2-17ee-458f-9e08-cae541aa055a
      - 6da47214-b154-40ff-a3a2-ea5aed270acc
      - 7ac90afd-6f7a-42aa-bb94-636d18a398a4
      - 99075b90-78a8-4904-9d1c-96aadc490f11
      - 9cd82af2-a416-4f0b-b8ed-62a040818439
      - a0056b3b-d888-4503-a9ae-498c4edf0c16
      - a293aa22-15be-4185-a505-f82678d080de
      - a677b29a-6a93-490a-8df1-19b2ca301293
      - a762d926-e47e-4322-9d1d-1e20f558821f
      - a76b3abc-c7a8-4e23-a5b7-7795c09d5b4a
      - b30c7f02-a6c1-4060-b596-e43fc82daf44
      - b6528717-b8b4-4f07-8d85-e3d567afa59c
      - bba897c3-d8ac-428d-b756-369a291b9119
      - c001f175-1c73-4ceb-b0dd-3dc096ad9864
      - cbd5926b-4931-411f-997a-83850f627db5
      - ccfcd7b3-7092-44cb-a951-e8f477545426
      - d16639a2-796b-4562-a94f-09a8f36263e0
      - dabf29ff-dd5d-403e-bdb8-101a1d85b001
      - e59d0703-7467-49f3-b930-a668b20ee0d6
      - e6190b84-f3db-4e80-9620-f3a1af760bb7
      - e633de71-96d0-4500-a335-6339cfe5647a
      - fd99fdaf-73a6-466c-87fc-c2272d6b36ca
  options: 4

```

### FurnitureLatest/Assets/StateMachine.js

```javascript
//@input SceneObject addFurnitureButton
//@input SceneObject furnitureMenu
//@input SceneObject tableMesh
//@input SceneObject chairMesh
//@input SceneObject binMesh
//@input SceneObject[] menuItemsToHide

// Function to hide all specified menu items
function hideMenuItems() {
    for (var i = 0; i < script.menuItemsToHide.length; i++) {
        var item = script.menuItemsToHide[i];
        if (item) {
            item.enabled = false;
        }
    }
}

// Function to show the furniture menu
function showFurnitureMenu() {
    hideMenuItems(); // Hide other menu items
    if (script.mainMenu) {
        script.mainMenu.enabled = false; // Hide the main menu
    }
    if (script.furnitureMenu) {
        script.furnitureMenu.enabled = true; // Show the furniture menu
    }
    
}

// Function to show the table mesh
function showTableMesh() {
    
    if (script.tableMesh) {
        script.tableMesh.enabled = true;
    }
}

// Function to show the chair mesh
function showChairMesh() {
    
    if (script.chairMesh) {
        script.chairMesh.enabled = true;
    }
}

// Function to show the bin mesh
function showBinMesh() {

    if (script.binMesh) {
        script.binMesh.enabled = true;
    }
}

// Helper function to hide all furniture meshes
function hideAllMeshes() {
    if (script.tableMesh) {
        script.tableMesh.enabled = false;
    }
    if (script.chairMesh) {
        script.chairMesh.enabled = false;
    }
    if (script.binMesh) {
        script.binMesh.enabled = false;
    }
}

// Function to initialize the state of the app
function initialize() {

    // Explicitly show the main menu
    if (script.mainMenu) {
        script.mainMenu.enabled = true;
    }
    // Ensure the furniture menu is hidden
    if (script.furnitureMenu) {
        script.furnitureMenu.enabled = false;
    }
    hideAllMeshes();
}

// Assign the functions to the script for easier linking
script.showFurnitureMenu = showFurnitureMenu;
script.showTableMesh = showTableMesh;
script.showChairMesh = showChairMesh;
script.showBinMesh = showBinMesh;

// Call initialize to set up the initial state
initialize();
```

### FurnitureLatest/Assets/furnitureDetectionArea.js

```javascript
//@input Component.DeviceTracking deviceTracking
//@input Component.Text3D textElement 

if (script.deviceTracking) {
   
    script.deviceTracking.worldOptions.nativePlaneTrackingType = NativePlaneTrackingType.Horizontal;
}

// Function to handle when planes are added
function onPlanesAdded(eventData) {
    if (eventData && eventData.planes) {
        print("Planes detected: " + eventData.planes.length); 
        eventData.planes.forEach(function (plane) {
            var size = plane.size;
            var width = size.x;
            var height = size.z;

            // Display the dimensions
            displayDimensions(width, height);
        });
    } else {
        print("No planes detected in the event data.");
    }
}

// Function to handle when planes are updated
function onPlanesUpdated(eventData) {
    if (eventData && eventData.planes && eventData.planes.length > 0) {
        print("Updating planes: " + eventData.planes.length);
        var plane = eventData.planes[0]; // Take the first plane 
        var size = plane.size;
        var width = size.x;
        var height = size.z;

        // Update the dimensions in real-time
        displayDimensions(width, height);
    } else {
        print("No planes available in the update event.");
        script.textElement.enabled = false; // Hide the text if no plane is present
    }
}

// Function to display plane dimensions
function displayDimensions(width, height) {
    if (script.textElement) {
        var dimensionsText = "Plane Dimensions:\nWidth: " + width.toFixed(2) + "m\nDepth: " + height.toFixed(2) + "m";
        script.textElement.text = dimensionsText;
        script.textElement.enabled = true; // Make sure the text element is visible
    } else {
        print("Text element is not assigned correctly.");
    }
}

// Function to handle when planes are removed
function onPlanesRemoved(eventData) {
    if (script.textElement) {
        script.textElement.enabled = false; // Hide the text when no planes are detected
    } else {
        print("Text element is not assigned correctly.");
    }
}

// Register the plane tracking events correctly
script.createEvent("WorldTrackingPlanesAddedEvent").bind(onPlanesAdded);
script.createEvent("WorldTrackingPlanesRemovedEvent").bind(onPlanesRemoved);
script.createEvent("WorldTrackingPlanesUpdatedEvent").bind(onPlanesUpdated);
```

### FurnitureLatest/Assets/SpectaclesInteractionKit/SIK.ts

```typescript
import { InteractionManager as InteractionManagerProvider } from './Core/InteractionManager/InteractionManager';
import { CursorControllerProvider } from './Providers/CursorControllerProvider/CursorControllerProvider';
import { HandInputData as HandInputDataProvider } from './Providers/HandInputData/HandInputData';
import { InteractionConfigurationProvider } from './Providers/InteractionConfigurationProvider/InteractionConfigurationProvider';
import SIKLogLevelProvider from './Providers/InteractionConfigurationProvider/SIKLogLevelProvider';
import { MobileInputData as MobileInputDataProvider } from './Providers/MobileInputData/MobileInputData';

export interface SIKAPI {
  SIKLogLevelProvider: SIKLogLevelProvider
  InteractionConfiguration: InteractionConfigurationProvider
  HandInputData: HandInputDataProvider
  MobileInputData: MobileInputDataProvider
  InteractionManager: InteractionManagerProvider
  CursorController: CursorControllerProvider
}

export const SIK: SIKAPI = new Proxy({},
    {
        get: (target, prop: keyof SIKAPI) => {
            switch (prop) {
                case 'SIKLogLevelProvider':
                    return SIKLogLevelProvider.getInstance();
                case 'InteractionConfiguration':
                    return InteractionConfigurationProvider.getInstance();
                case 'HandInputData':
                    return HandInputDataProvider.getInstance();
                case 'MobileInputData':
                    return MobileInputDataProvider.getInstance();
                case 'InteractionManager':
                    return InteractionManagerProvider.getInstance();
                case 'CursorController':
                    return CursorControllerProvider.getInstance();
                default:
                    throw new Error(`Property ${String(prop)} does not exist on SIK API`);
            }
        },
    }) as SIKAPI;

```

### FurnitureLatest/PluginsUserPreferences/Snap_Plugin_Gui_AssetBrowser_cd11ace2-8507-4965-a068-d85c26031a6b.yaml

```yaml
CollapsedEntities:
  type: stringset
  value:
    size: 441
    values:
      - Device Camera Texture.deviceCameraTexture
      - Echopark.hdr
      - Echopark.hdr/Diffuse
      - Echopark.hdr/Specular
      - Home Pack
      - Home Pack/.hidden
      - Home Pack/.hidden/bin.ss_graph
      - Home Pack/Bitmoji Home Pack Resources
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Material/bin.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_bin_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/bin/Meshes/C_lid_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/chair
      - Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Material/chair.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/chair/Meshes/Box001.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table
      - Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Material/cooking_table.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/cooking_table/Meshes/Labtable.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty
      - Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Material/countertop_empty.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/countertop_empty/Meshes/C_countertop_empty_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Materials
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Materials/desk_MAT.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/C_desk_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer1_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer2_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/L_drawer3_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer4_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer5_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/desk/Meshes/R_drawer6_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table
      - Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Material/ketchup_table.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/ketchup_table/Meshes/C_ketchupTable_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Material/nightstand.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_drawer_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/nightstand/Meshes/C_nightstand_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Material/picture_frame.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_frame_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/picture_frame/Meshes/C_picture_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/sofa
      - Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Material/sofa.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/sofa/Meshes/C_sofa_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Material/stool.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool/Meshes/C_stool_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Material/stool_wooden.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/stool_wooden/Meshes/C_stool_wooden_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table/Material/labtable.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table/Meshes/C_Labtable_GEO.mesh
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Material
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Material/table_dining.mat
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table_dining/Meshes
      - Home Pack/Bitmoji Home Pack Resources/Meshes/table_din
[truncated — 27163 more characters]
```

[150 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]