From ee12425aca75761b77924357fe4520c5de48a67b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Mon, 26 May 2025 10:07:48 +0900 Subject: [PATCH] =?UTF-8?q?AssetManager=20=EC=97=90=EC=84=9C=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=ED=95=98=EB=8A=94=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Prefabs/AAA/Panel_AssetManager.prefab | 58 ++++++++++++------- Assets/Scenes/pre-0.24.0.unity | 52 ++++++++--------- .../Studio/AssetTool/CustomAssetConnector.cs | 33 +++++++++-- .../Studio/AssetTool/FBXFileManager.cs | 11 ++-- .../Scripts/Studio/Managers/AssetManager.cs | 4 +- .../UI/Elements/UI_DynamicObjectItem.cs | 31 +++++++++- .../Studio/UI/Panel/Panel_3DFactorySetting.cs | 15 ++++- 7 files changed, 146 insertions(+), 58 deletions(-) diff --git a/Assets/Prefabs/AAA/Panel_AssetManager.prefab b/Assets/Prefabs/AAA/Panel_AssetManager.prefab index 29613170..3ff859f3 100644 --- a/Assets/Prefabs/AAA/Panel_AssetManager.prefab +++ b/Assets/Prefabs/AAA/Panel_AssetManager.prefab @@ -306,9 +306,9 @@ RectTransform: - {fileID: 7481543923475719227} m_Father: {fileID: 7343312561069943535} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -75} m_SizeDelta: {x: 240, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2728385891393727827 @@ -431,9 +431,9 @@ RectTransform: - {fileID: 2421497137240882956} m_Father: {fileID: 6745064031299755140} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 220, y: -63} m_SizeDelta: {x: 440, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6315243362297814222 @@ -551,7 +551,7 @@ RectTransform: m_Father: {fileID: 4404729160423077667} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 20, y: 20} m_Pivot: {x: 0.5, y: 0.5} @@ -628,9 +628,9 @@ RectTransform: m_Father: {fileID: 7385234480906153823} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: 0} m_Pivot: {x: 0, y: 1} --- !u!222 &6128124770283240513 CanvasRenderer: @@ -831,13 +831,14 @@ GameObject: - component: {fileID: 6954167609728662753} - component: {fileID: 8549676201747870985} - component: {fileID: 7236664214523229146} + - component: {fileID: 8105564570549308953} m_Layer: 5 m_Name: Panel_AssetManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &7257151592976347537 RectTransform: m_ObjectHideFlags: 0 @@ -909,6 +910,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 25457a0961cc0bb4a949d5fe58c2ada6, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &8105564570549308953 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2762757506943678736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f9c6f8c6f0c462a4ab09d615c0d0db6c, type: 3} + m_Name: + m_EditorClassIdentifier: + state: 0 + resizeDirection: 0 + handleThickness: 5 + minWidth: 100 + minHeight: 100 --- !u!1 &2774336303168765450 GameObject: m_ObjectHideFlags: 0 @@ -1393,7 +1411,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 83} m_Pivot: {x: 0, y: 1} --- !u!114 &8717931296778287524 MonoBehaviour: @@ -1604,9 +1622,9 @@ RectTransform: - {fileID: 5658098668149870723} m_Father: {fileID: 6745064031299755140} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 220, y: -23} m_SizeDelta: {x: 440, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &7490994531347389305 @@ -1854,9 +1872,9 @@ RectTransform: - {fileID: 2241699934510569533} m_Father: {fileID: 7343312561069943535} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -25} m_SizeDelta: {x: 240, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4372204296340440569 @@ -2105,9 +2123,9 @@ RectTransform: - {fileID: 1460487750988931088} m_Father: {fileID: 7343312561069943535} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -125} m_SizeDelta: {x: 240, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &3552413529825779625 diff --git a/Assets/Scenes/pre-0.24.0.unity b/Assets/Scenes/pre-0.24.0.unity index 6bd77ae6..04cad18d 100644 --- a/Assets/Scenes/pre-0.24.0.unity +++ b/Assets/Scenes/pre-0.24.0.unity @@ -6990,67 +6990,67 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.x - value: 120 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.y - value: -25 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_SizeDelta.x - value: -17 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.x - value: 220 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.y - value: -23 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6745064031299755140, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_SizeDelta.y - value: 83 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.x - value: 120 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.y - value: -75 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7257151592976347537, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_Pivot.x @@ -7134,43 +7134,43 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.x - value: 220 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.y - value: -63 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.x - value: 120 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchoredPosition.y - value: -125 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] diff --git a/Assets/Scripts/Studio/AssetTool/CustomAssetConnector.cs b/Assets/Scripts/Studio/AssetTool/CustomAssetConnector.cs index efd0cf52..589202d2 100644 --- a/Assets/Scripts/Studio/AssetTool/CustomAssetConnector.cs +++ b/Assets/Scripts/Studio/AssetTool/CustomAssetConnector.cs @@ -117,8 +117,36 @@ namespace Studio.AssetTool } yield return null; } + } + private void OnLoadAssetSelected(AssetLibraryItem item, AssetData asset) + { + if (item == null || item.linkedObject == null) + { + selectedAssetData = null; + return; + } + selectedAssetData = item.linkedObject.GetComponent(); + if (selectedAssetData == null || selectedAssetData.isLoadComplete == false) + { + selectedAssetData = null; + return; + } + selectedItem = UnityEngine.GameObject.Instantiate(renderObjectPrefab); + selectRenderObject = selectedItem.GetComponent(); + selectRenderObject.OnSelected += panel_ObjectDistance.SelectObjectFromCreate; + selectRenderObject.instantiateObject = selectedAssetData.InstantiateLoadedObject; + selectRenderObject.getBounds = selectedAssetData.GetCombinedBoundary; + selectRenderObject.CreateRenderObject(); + selectRenderObject.Select(); + selectedAssetData.AddTransformToRender(selectedItem.transform); + CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform()); + + selectRenderObject.transform.position = new Vector3(asset.position.x, asset.position.y, asset.position.z); + selectRenderObject.transform.eulerAngles = new Vector3(asset.rotation.x, asset.rotation.y, asset.rotation.z); + selectRenderObject.transform.localScale = new Vector3(asset.scale.x, asset.scale.y, asset.scale.z); + } public void OnAssetSelected(AssetLibraryItem item) { if (item == null || item.linkedObject == null) @@ -190,10 +218,7 @@ namespace Studio.AssetTool public void OnLoadAsset(AssetData asset) { AssetLibraryItem item = assetScrollView.FindItem(asset.name, AssetLibraryItemType.file); - OnAssetSelected(item); - selectRenderObject.transform.position = new Vector3(asset.position.x, asset.position.y, asset.position.z); - selectRenderObject.transform.eulerAngles = new Vector3(asset.rotation.x, asset.rotation.y, asset.rotation.z); - selectRenderObject.transform.localScale = new Vector3(asset.scale.x, asset.scale.y, asset.scale.z); + OnLoadAssetSelected(item, asset); OnAssetDropped(item); } diff --git a/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs b/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs index 753f785a..f4e0ed3a 100644 --- a/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs +++ b/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs @@ -56,11 +56,11 @@ namespace Studio.AssetTool var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories); - if (dataRepo.TryGetDataFromPath(path, out var p)) - return; - foreach (var file in files) { + if (dataRepo.TryGetDataFromPath(path, out var p)) + continue; + filePaths.Add(file); } @@ -75,6 +75,9 @@ namespace Studio.AssetTool var directoryPath = Path.GetDirectoryName(file); var folderName = Path.GetFileName(directoryPath); + if (dataRepo.TryGetDataFromName(assetName, out var p)) + continue; + GameObject newObject = new GameObject(assetName); newObject.transform.parent = fbxAnchor; CustomAssetData assetData = newObject.AddComponent(); @@ -90,6 +93,7 @@ namespace Studio.AssetTool OnLoadComplete(assetData); } + onLoadComplete?.Invoke(); } public void SaveToLocalData(List assetDatas, string path = "") @@ -232,7 +236,6 @@ namespace Studio.AssetTool connector.assetScrollView.AddItem(folderName, null, AssetLibraryItemType.folder); AssetLibraryItem item = connector.assetScrollView.AddItem(assetData.assetName, assetData.gameObject, AssetLibraryItemType.file, urlSectionItem); - onLoadComplete?.Invoke(); } } } \ No newline at end of file diff --git a/Assets/Scripts/Studio/Managers/AssetManager.cs b/Assets/Scripts/Studio/Managers/AssetManager.cs index 1b30e986..d12d5031 100644 --- a/Assets/Scripts/Studio/Managers/AssetManager.cs +++ b/Assets/Scripts/Studio/Managers/AssetManager.cs @@ -31,6 +31,7 @@ namespace Studio fbxFileManager.onLoadComplete += OnLoadCustomAsset; onAssetManagerDatas += canvas_Popup.panel_assetmanager.SetAssetManager; onAssetManagerDatas += (data) => projectManager.OpenProjectSettingsDataAfterDataLoad(); + } public void LoadLocalFBXDirectorys(List folderPaths) { @@ -80,13 +81,12 @@ namespace Studio { var connector = ManagerHub.instance.Get(); connector.OnLoadAsset(asset); - - itemDict.Add(asset.id, connector.connectedAssets.Last().hierarchyItem); } private void RestoreHierarchy(AssetData asset) { var connector = ManagerHub.instance.Get(); + itemDict.TryAdd(asset.id, connector.connectedAssets.Last().hierarchyItem); foreach (int id in asset.children) { diff --git a/Assets/Scripts/Studio/UI/Elements/UI_DynamicObjectItem.cs b/Assets/Scripts/Studio/UI/Elements/UI_DynamicObjectItem.cs index cd09dbf1..8461574d 100644 --- a/Assets/Scripts/Studio/UI/Elements/UI_DynamicObjectItem.cs +++ b/Assets/Scripts/Studio/UI/Elements/UI_DynamicObjectItem.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System; using Studio.Util; using Studio.AssetTool; +using System.Linq; namespace Studio { @@ -27,6 +28,30 @@ namespace Studio public Action onUISetting; public Action onRemoveItem; + public void SetDataList(List dataList) + { + this.dataList = dataList; + + var preDataDropdownOption = Dropdown_Data.options[Dropdown_Data.value].text; + SetDataDropdown(); + + foreach(var option in Dropdown_Data.options) + { + Dropdown_Data.value = option.text == preDataDropdownOption ? Dropdown_Data.options.IndexOf(option) : 0; + } + } + public void SetModelList(List modelList) + { + this.modelList = modelList; + + var preDataDropdownOption = Dropdown_Model.options[Dropdown_Model.value].text; + SetModelDropdown(); + + foreach (var option in Dropdown_Model.options) + { + Dropdown_Model.value = option.text == preDataDropdownOption ? Dropdown_Model.options.IndexOf(option) : 0; + } + } public void SetData(List dataList, List modelList) { this.dataList = dataList; @@ -106,7 +131,11 @@ namespace Studio { var dynamic3DModelConnection = new Dynamic3DModelConnection(); dynamic3DModelConnection.dataName = Dropdown_Data.options[Dropdown_Data.value].text; - dynamic3DModelConnection.modelName = selectedModel.assetName; + + if (selectedModel != null) + { + dynamic3DModelConnection.modelName = selectedModel.assetName; + } dynamic3DModelConnection.modelUISettingData = selectDynamicObjectData; return dynamic3DModelConnection; diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_3DFactorySetting.cs b/Assets/Scripts/Studio/UI/Panel/Panel_3DFactorySetting.cs index f0f96d34..ed33a0cf 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_3DFactorySetting.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_3DFactorySetting.cs @@ -51,7 +51,9 @@ namespace Studio if (mqttSetting == null) return; - foreach(var mqttConnection in mqttSetting.mqttConnections) + dataList.Clear(); + + foreach (var mqttConnection in mqttSetting.mqttConnections) { foreach(var mqttTopic in mqttConnection.topics) { @@ -59,11 +61,22 @@ namespace Studio dataList.Add(dataName); } } + foreach(var item in dynamicObjectItems) + { + item.SetDataList(dataList); + } } public void SetModelDropdownData(CustomAssetDataRepository customAssetDataRepository) { + modelList.Clear(); + var assetDatas = customAssetDataRepository.assetDatas; modelList.AddRange(assetDatas); + + foreach (var item in dynamicObjectItems) + { + item.SetModelList(modelList); + } } private void OnClickAddDynamicObjectButton() {