diff --git a/Assets/Prefabs/AAA/Panel_AssetManager.prefab b/Assets/Prefabs/AAA/Panel_AssetManager.prefab index 9f7bad06..ffe14256 100644 --- a/Assets/Prefabs/AAA/Panel_AssetManager.prefab +++ b/Assets/Prefabs/AAA/Panel_AssetManager.prefab @@ -831,6 +831,7 @@ GameObject: - component: {fileID: 6954167609728662753} - component: {fileID: 8549676201747870985} - component: {fileID: 7236664214523229146} + - component: {fileID: 8105564570549308953} m_Layer: 5 m_Name: Panel_AssetManager m_TagString: Untagged @@ -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 diff --git a/Assets/Scenes/pre-0.24.0.unity b/Assets/Scenes/pre-0.24.0.unity index 1ad35c2a..04cad18d 100644 --- a/Assets/Scenes/pre-0.24.0.unity +++ b/Assets/Scenes/pre-0.24.0.unity @@ -6984,6 +6984,74 @@ PrefabInstance: propertyPath: m_Name value: Panel_AssetManager objectReference: {fileID: 0} + - target: {fileID: 2762757506943678736, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6745064031299755140, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7257151592976347537, guid: d524adc6297ea50418c16190b3f42f66, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -7064,6 +7132,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] 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 edbce7e7..dd27aff6 100644 --- a/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs +++ b/Assets/Scripts/Studio/AssetTool/FBXFileManager.cs @@ -55,11 +55,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); } @@ -74,6 +74,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(); @@ -89,6 +92,7 @@ namespace Studio.AssetTool OnLoadComplete(assetData); } + onLoadComplete?.Invoke(); } public void SaveToLocalData(List assetDatas, string path = "") @@ -231,7 +235,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 e265c17d..dfd0e93d 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() {