From 23cc4ab8f047232ce7844e5e4dcee0e0497ceb3d Mon Sep 17 00:00:00 2001 From: Ignacio Gomez Date: Wed, 25 Jun 2025 20:06:08 -0600 Subject: [PATCH] First version of UI consumed from API --- Assets/API.meta | 8 + Assets/API/FurnitureFetcher.cs | 62 + Assets/API/FurnitureFetcher.cs.meta | 11 + Assets/API/FurnitureSceneLoader.cs | 18 + Assets/API/FurnitureSceneLoader.cs.meta | 11 + Assets/API/Models.meta | 8 + Assets/API/Models/FurnitureItem.cs | 30 + Assets/API/Models/FurnitureItem.cs.meta | 11 + Assets/API/Styles.meta | 8 + Assets/API/Styles/FurnitureItem.uxml | 7 + Assets/API/Styles/FurnitureItem.uxml.meta | 10 + Assets/API/Styles/MainScreen.uxml | 6 + Assets/API/Styles/MainScreen.uxml.meta | 10 + Assets/Scenes/ARScreen.unity | 315 +++- Assets/Scenes/FurnitureListScene.unity | 498 ++++++ Assets/Scenes/FurnitureListScene.unity.meta | 7 + Assets/UI Toolkit.meta | 8 + Assets/UI Toolkit/PanelSettings.asset | 38 + Assets/UI Toolkit/PanelSettings.asset.meta | 8 + Assets/UI Toolkit/UnityThemes.meta | 8 + .../UnityThemes/UnityDefaultRuntimeTheme.tss | 1 + .../UnityDefaultRuntimeTheme.tss.meta | 11 + Packages/manifest.json | 2 +- Packages/packages-lock.json | 4 +- ProjectSettings/EditorBuildSettings.asset | 5 +- ProjectSettings/ProjectSettings.asset | 8 +- UIElementsSchema/UIElements.xsd | 13 + UIElementsSchema/Unity.Profiling.Editor.xsd | 104 ++ UIElementsSchema/Unity.UI.Builder.xsd | 975 +++++++++++ .../UnityEditor.Experimental.GraphView.xsd | 66 + UIElementsSchema/UnityEditor.Overlays.xsd | 50 + ...UnityEditor.PackageManager.UI.Internal.xsd | 606 +++++++ UIElementsSchema/UnityEditor.Search.xsd | 28 + .../UnityEditor.ShortcutManagement.xsd | 46 + .../UnityEditor.UIElements.Debugger.xsd | 25 + UIElementsSchema/UnityEditor.UIElements.xsd | 567 +++++++ UIElementsSchema/UnityEngine.UIElements.xsd | 1459 +++++++++++++++++ 37 files changed, 5043 insertions(+), 9 deletions(-) create mode 100644 Assets/API.meta create mode 100644 Assets/API/FurnitureFetcher.cs create mode 100644 Assets/API/FurnitureFetcher.cs.meta create mode 100644 Assets/API/FurnitureSceneLoader.cs create mode 100644 Assets/API/FurnitureSceneLoader.cs.meta create mode 100644 Assets/API/Models.meta create mode 100644 Assets/API/Models/FurnitureItem.cs create mode 100644 Assets/API/Models/FurnitureItem.cs.meta create mode 100644 Assets/API/Styles.meta create mode 100644 Assets/API/Styles/FurnitureItem.uxml create mode 100644 Assets/API/Styles/FurnitureItem.uxml.meta create mode 100644 Assets/API/Styles/MainScreen.uxml create mode 100644 Assets/API/Styles/MainScreen.uxml.meta create mode 100644 Assets/Scenes/FurnitureListScene.unity create mode 100644 Assets/Scenes/FurnitureListScene.unity.meta create mode 100644 Assets/UI Toolkit.meta create mode 100644 Assets/UI Toolkit/PanelSettings.asset create mode 100644 Assets/UI Toolkit/PanelSettings.asset.meta create mode 100644 Assets/UI Toolkit/UnityThemes.meta create mode 100644 Assets/UI Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss create mode 100644 Assets/UI Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss.meta create mode 100644 UIElementsSchema/UIElements.xsd create mode 100644 UIElementsSchema/Unity.Profiling.Editor.xsd create mode 100644 UIElementsSchema/Unity.UI.Builder.xsd create mode 100644 UIElementsSchema/UnityEditor.Experimental.GraphView.xsd create mode 100644 UIElementsSchema/UnityEditor.Overlays.xsd create mode 100644 UIElementsSchema/UnityEditor.PackageManager.UI.Internal.xsd create mode 100644 UIElementsSchema/UnityEditor.Search.xsd create mode 100644 UIElementsSchema/UnityEditor.ShortcutManagement.xsd create mode 100644 UIElementsSchema/UnityEditor.UIElements.Debugger.xsd create mode 100644 UIElementsSchema/UnityEditor.UIElements.xsd create mode 100644 UIElementsSchema/UnityEngine.UIElements.xsd diff --git a/Assets/API.meta b/Assets/API.meta new file mode 100644 index 0000000..81ab039 --- /dev/null +++ b/Assets/API.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85542efa4a532704d8e1dbc3007e92b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/API/FurnitureFetcher.cs b/Assets/API/FurnitureFetcher.cs new file mode 100644 index 0000000..6aac1a0 --- /dev/null +++ b/Assets/API/FurnitureFetcher.cs @@ -0,0 +1,62 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.UIElements; + +class FurnitureFetcher : MonoBehaviour +{ + public VisualTreeAsset itemTemplate; + public UIDocument uiDocument; + + public static string API_URL = "http://100.123.31.103:5102/api/v1/FurnitureVariant/GetByIds"; + + private void Awake() + { + StartCoroutine(GetFurnitureData()); + } + + IEnumerator GetFurnitureData() + { + Debug.Log($"API URL: {API_URL}"); + List variantIds = new() + { + "ab6fd51f-81f0-490d-b713-8d4f3de61a58", + "1f3b348f-b3ee-4985-b76f-7f6d61f2c835" + }; + + FurnitureIdsRequest data = new() { ids = variantIds }; + string json = JsonUtility.ToJson(data); + + using UnityWebRequest request = new(API_URL, "POST"); + byte[] bodyRaw = Encoding.UTF8.GetBytes(json); + request.uploadHandler = new UploadHandlerRaw(bodyRaw); + request.downloadHandler = new DownloadHandlerBuffer(); + request.SetRequestHeader("Content-Type", "application/json"); + + yield return request.SendWebRequest(); + + if (request.result == UnityWebRequest.Result.Success) + { + string wrappedJson = "{\"items\":" + request.downloadHandler.text + "}"; + FurnitureVariantList list = JsonUtility.FromJson(wrappedJson); + + var root = uiDocument.rootVisualElement; + var scrollView = root.Q("furniture-list"); + + foreach (var variant in list.items) + { + VisualElement item = itemTemplate.CloneTree(); + item.Q