자산관리자 URL에 잘못된 값이 한번이라도 입력되었을 경우 이후 정상 작동 하지 않는 오류 수정 #122
@@ -1,24 +0,0 @@
|
||||
using Studio.Command;
|
||||
using Studio.Manage;
|
||||
|
||||
namespace Studio
|
||||
{
|
||||
public class LoadLocalAssetCommand : IIrreversibleCommand
|
||||
{
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
var assetManager = ManagerHub.instance.Get<AssetManager>();
|
||||
var canvas_Popup = CanvasManager.instance.GetCanvas<Canvas_Popup>();
|
||||
assetManager.CombineAssetFolderPaths(canvas_Popup.panel_assetmanager.GetAssetManagerData().localAssetsPaths);
|
||||
assetManager.CombineAssetFolderPaths(canvas_Popup.panel_assetsetting.GetAssetManagerData().localAssetsPaths);
|
||||
assetManager.LoadLocalFBXDirectorys();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b90a946289e83746bd7ab964aeec940
|
||||
@@ -16,7 +16,15 @@ namespace Studio.Manage
|
||||
private List<string> folderPathList = new List<string>();
|
||||
private Dictionary<int, HierarchyItem> itemDict = new Dictionary<int, HierarchyItem>();
|
||||
|
||||
private Dictionary<int, string> assetSettingPaths = new Dictionary<int, string>();
|
||||
private Dictionary<int, string> assetManagerPaths = new Dictionary<int, string>();
|
||||
|
||||
public Action<Dictionary<int, string>> onAddMangerPaths;
|
||||
public Action<Dictionary<int, string>> onAddSettingPaths;
|
||||
|
||||
public Action<AssetManagerData> onAssetManagerDatas;
|
||||
public Action<AssetManagerData> onSetAssetManager;
|
||||
public Action<AssetManagerData> onSetAssetSetting;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
@@ -29,8 +37,11 @@ namespace Studio.Manage
|
||||
var projectManager = ManagerHub.instance.Get<ProjectManager>();
|
||||
|
||||
fbxFileManager.onLoadComplete += OnLoadCustomAsset;
|
||||
onAssetManagerDatas += canvas_Popup.panel_assetmanager.SetAssetManager;
|
||||
onAssetManagerDatas += canvas_Popup.panel_assetsetting.SetAssetManager;
|
||||
onAddSettingPaths += canvas_Popup.panel_assetsetting.SetAssetPathItmes;
|
||||
onAddMangerPaths += canvas_Popup.panel_assetmanager.SetAssetPathItmes;
|
||||
|
||||
onSetAssetManager += canvas_Popup.panel_assetmanager.SetAssetManager;
|
||||
onSetAssetSetting += canvas_Popup.panel_assetsetting.SetAssetManager;
|
||||
onAssetManagerDatas += (data) => projectManager.OpenProjectSettingsDataAfterDataLoad();
|
||||
|
||||
}
|
||||
@@ -39,8 +50,40 @@ namespace Studio.Manage
|
||||
localAssetPaths.Clear();
|
||||
folderPathList.Clear();
|
||||
}
|
||||
public void LoadAssetManagerFBXDirectorys(int index, string folderPath)
|
||||
{
|
||||
if (!assetManagerPaths.ContainsKey(index))
|
||||
{
|
||||
assetManagerPaths.Add(index, folderPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
assetManagerPaths[index] = folderPath;
|
||||
}
|
||||
onAddSettingPaths?.Invoke(assetManagerPaths);
|
||||
CombineAssetFolderPaths(assetManagerPaths.Values.ToList());
|
||||
}
|
||||
public void LoadAssetSettingFBXDirectorys(int index, string folderPath)
|
||||
{
|
||||
if (!assetSettingPaths.ContainsKey(index))
|
||||
{
|
||||
assetSettingPaths.Add(index, folderPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
assetSettingPaths[index] = folderPath;
|
||||
}
|
||||
onAddMangerPaths?.Invoke(assetSettingPaths);
|
||||
CombineAssetFolderPaths(assetSettingPaths.Values.ToList());
|
||||
}
|
||||
|
||||
public void CombineAssetFolderPaths(List<string> folderPaths)
|
||||
{
|
||||
ClearFolderPathList();
|
||||
|
||||
if (folderPaths == null)
|
||||
return;
|
||||
|
||||
foreach(var folderPath in folderPaths)
|
||||
{
|
||||
if (folderPathList.Contains(folderPath))
|
||||
@@ -50,6 +93,8 @@ namespace Studio.Manage
|
||||
folderPathList.Add(folderPath);
|
||||
localAssetPaths.Add(folderPath);
|
||||
}
|
||||
|
||||
LoadLocalFBXDirectorys();
|
||||
}
|
||||
public void LoadLocalFBXDirectorys()
|
||||
{
|
||||
@@ -60,6 +105,11 @@ namespace Studio.Manage
|
||||
assetManagerData.localAssetsPaths.AddRange(folderPathList);
|
||||
onAssetManagerDatas?.Invoke(assetManagerData);
|
||||
}
|
||||
public void SetAssetManager(AssetManagerData data)
|
||||
{
|
||||
onSetAssetManager?.Invoke(data);
|
||||
onSetAssetSetting?.Invoke(data);
|
||||
}
|
||||
|
||||
private void OnLoadCustomAsset()
|
||||
{
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace Studio.AssetTool
|
||||
}
|
||||
public void ClearFilePaths()
|
||||
{
|
||||
dataRepo.assetDatas.Clear();
|
||||
filePaths.Clear();
|
||||
}
|
||||
public void LoadLocalFBXDirectorys(List<string> folderPaths)
|
||||
@@ -62,6 +63,11 @@ namespace Studio.AssetTool
|
||||
|
||||
public void LoadLocalFBXDirectory(string folderPath)
|
||||
{
|
||||
if (!Directory.Exists(folderPath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var files = Directory.GetFiles(folderPath, "*.fbx", SearchOption.AllDirectories);
|
||||
|
||||
foreach (var file in files)
|
||||
@@ -93,7 +99,6 @@ namespace Studio.AssetTool
|
||||
|
||||
if (dataRepo.TryGetDataFromName(assetName, out var p))
|
||||
{
|
||||
OnLoadComplete(p);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace Studio.Manage
|
||||
sceneSettingService.SetMQTTSettingData(curProjectData.sceneStartSetting.mqttSetting);
|
||||
|
||||
assetManager.CombineAssetFolderPaths(curProjectData.assetManagerData.localAssetsPaths);
|
||||
assetManager.LoadLocalFBXDirectorys();
|
||||
assetManager.SetAssetManager(curProjectData.assetManagerData);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -79,13 +79,14 @@ namespace Studio
|
||||
|
||||
canvasHandler = new PopupCanvasHandler(this);
|
||||
|
||||
var assetManager = ManagerHub.instance.Get<AssetManager>();
|
||||
var dataManager = FindAnyObjectByType<ConnectDataManager>();
|
||||
var quitManager = FindAnyObjectByType<QuitManager>();
|
||||
|
||||
panel_newprojectinfo.onClickCreate += () => CommandInvoker.instance.Invoke(new NewProjectCommand());
|
||||
panel_openprojectinfo.onClickOpen += () => CommandInvoker.instance.Invoke(new OpenProjectCommand());
|
||||
panel_assetmanager.onSelectedURLs += () => CommandInvoker.instance.Invoke(new LoadLocalAssetCommand());
|
||||
panel_assetsetting.onSelectedURLs += () => CommandInvoker.instance.Invoke(new LoadLocalAssetCommand());
|
||||
panel_assetmanager.onSelectedURL += assetManager.LoadAssetManagerFBXDirectorys;
|
||||
panel_assetsetting.onSelectedURL += assetManager.LoadAssetSettingFBXDirectorys;
|
||||
|
||||
panel_saveandnewchecker.onClickSaveAndNew += () => CommandInvoker.instance.Invoke(new SaveAndNewProjectCommand());
|
||||
panel_saveandopenchecker.onClickSaveAndOpen += () => CommandInvoker.instance.Invoke(new SaveAndOpenProjectCommand());
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Studio.UI
|
||||
private TMP_InputField InputField_URL;
|
||||
private Button Button_SelectedFolder;
|
||||
|
||||
public Action onEndEditInputFieldURL;
|
||||
public Action<UI_FolderPathItem> onEndEditInputFieldURL;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
@@ -28,7 +28,7 @@ namespace Studio.UI
|
||||
if (string.IsNullOrEmpty(input))
|
||||
return;
|
||||
|
||||
onEndEditInputFieldURL?.Invoke();
|
||||
onEndEditInputFieldURL?.Invoke(this);
|
||||
}
|
||||
private void OnClickSelectedFolderButton()
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Studio.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XRLib.UI;
|
||||
@@ -26,9 +27,9 @@ namespace Studio.UI
|
||||
|
||||
private UI_FolderPathItem prf_folderPathItem;
|
||||
private List<UI_FolderPathItem> folderPathItems = new List<UI_FolderPathItem>();
|
||||
private List<string> selectedURLs = new List<string>();
|
||||
private Dictionary<int, string> selectedURLs = new Dictionary<int, string>();
|
||||
|
||||
public Action onSelectedURLs;
|
||||
public Action<int, string> onSelectedURL;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
@@ -70,29 +71,55 @@ namespace Studio.UI
|
||||
}
|
||||
private void OnClickAddFolderPathItemButton()
|
||||
{
|
||||
selectedURLs.Clear();
|
||||
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
folderPathItems.Add(item);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
|
||||
selectedURLs.Add(folderPathItems.IndexOf(item), item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
private void LoadAsstsPath()
|
||||
private void LoadAsstsPath(UI_FolderPathItem item)
|
||||
{
|
||||
foreach(var item in folderPathItems)
|
||||
for(int i = 0; i < folderPathItems.Count; i++)
|
||||
{
|
||||
selectedURLs.Add(item.GetURL());
|
||||
if(folderPathItems[i] == item)
|
||||
{
|
||||
onSelectedURL?.Invoke(i, item.GetURL());
|
||||
}
|
||||
}
|
||||
onSelectedURLs?.Invoke();
|
||||
}
|
||||
public AssetManagerData GetAssetManagerData()
|
||||
{
|
||||
var assetManagerData = new AssetManagerData();
|
||||
assetManagerData.localAssetsPaths.AddRange(selectedURLs);
|
||||
assetManagerData.localAssetsPaths.AddRange(selectedURLs.Values.ToList());
|
||||
|
||||
return assetManagerData;
|
||||
}
|
||||
public void SetAssetPathItmes(Dictionary<int, string> paths)
|
||||
{
|
||||
var keys = paths.Keys.ToList();
|
||||
|
||||
for (int i = 0; i < keys.Count; i++)
|
||||
{
|
||||
int key = keys[i];
|
||||
|
||||
if (selectedURLs.ContainsKey(key))
|
||||
{
|
||||
folderPathItems[i].SetData(paths[key]);
|
||||
selectedURLs[key] = paths[key];
|
||||
}
|
||||
else
|
||||
{
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
item.SetData(paths[key]);
|
||||
folderPathItems.Add(item);
|
||||
selectedURLs.Add(key, item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
}
|
||||
}
|
||||
public void SetAssetManager(AssetManagerData assetManagerData)
|
||||
{
|
||||
selectedURLs.Clear();
|
||||
@@ -106,13 +133,13 @@ namespace Studio.UI
|
||||
if (assetManagerData == null)
|
||||
return;
|
||||
|
||||
foreach (var localPath in assetManagerData.localAssetsPaths)
|
||||
for (int i = 0; i < assetManagerData.localAssetsPaths.Count; i++)
|
||||
{
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
item.SetData(localPath);
|
||||
item.SetData(assetManagerData.localAssetsPaths[i]);
|
||||
folderPathItems.Add(item);
|
||||
selectedURLs.Add(item.GetURL());
|
||||
selectedURLs.Add(i,item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Studio.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XRLib.UI;
|
||||
@@ -25,9 +26,9 @@ namespace Studio.UI
|
||||
|
||||
private UI_FolderPathItem prf_folderPathItem;
|
||||
private List<UI_FolderPathItem> folderPathItems = new List<UI_FolderPathItem>();
|
||||
private List<string> selectedURLs = new List<string>();
|
||||
private Dictionary<int, string> selectedURLs = new Dictionary<int, string>();
|
||||
|
||||
public Action onSelectedURLs;
|
||||
public Action<int, string> onSelectedURL;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
@@ -64,29 +65,55 @@ namespace Studio.UI
|
||||
}
|
||||
private void OnClickAddFolderPathItemButton()
|
||||
{
|
||||
selectedURLs.Clear();
|
||||
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
folderPathItems.Add(item);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
selectedURLs.Add(folderPathItems.IndexOf(item), item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
private void LoadAsstsPath()
|
||||
private void LoadAsstsPath(UI_FolderPathItem item)
|
||||
{
|
||||
foreach (var item in folderPathItems)
|
||||
for (int i = 0; i < folderPathItems.Count; i++)
|
||||
{
|
||||
selectedURLs.Add(item.GetURL());
|
||||
if (folderPathItems[i] == item)
|
||||
{
|
||||
onSelectedURL?.Invoke(i, item.GetURL());
|
||||
}
|
||||
}
|
||||
onSelectedURLs?.Invoke();
|
||||
}
|
||||
public AssetManagerData GetAssetManagerData()
|
||||
{
|
||||
var assetManagerData = new AssetManagerData();
|
||||
assetManagerData.localAssetsPaths.AddRange(selectedURLs);
|
||||
assetManagerData.localAssetsPaths.AddRange(selectedURLs.Values.ToList());
|
||||
|
||||
return assetManagerData;
|
||||
}
|
||||
public void SetAssetPathItmes(Dictionary<int, string> paths)
|
||||
{
|
||||
var keys = paths.Keys.ToList();
|
||||
|
||||
for (int i = 0; i < keys.Count; i++)
|
||||
{
|
||||
int key = keys[i];
|
||||
|
||||
if (selectedURLs.ContainsKey(key))
|
||||
{
|
||||
folderPathItems[i].SetData(paths[key]);
|
||||
selectedURLs[key] = paths[key];
|
||||
}
|
||||
else
|
||||
{
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
item.SetData(paths[key]);
|
||||
folderPathItems.Add(item);
|
||||
selectedURLs.Add(key, item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
}
|
||||
}
|
||||
public void SetAssetManager(AssetManagerData assetManagerData)
|
||||
{
|
||||
selectedURLs.Clear();
|
||||
@@ -100,13 +127,13 @@ namespace Studio.UI
|
||||
if (assetManagerData == null)
|
||||
return;
|
||||
|
||||
foreach (var localPath in assetManagerData.localAssetsPaths)
|
||||
for (int i = 0; i < assetManagerData.localAssetsPaths.Count; i++)
|
||||
{
|
||||
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
|
||||
item.onEndEditInputFieldURL += LoadAsstsPath;
|
||||
item.SetData(localPath);
|
||||
item.SetData(assetManagerData.localAssetsPaths[i]);
|
||||
folderPathItems.Add(item);
|
||||
selectedURLs.Add(item.GetURL());
|
||||
selectedURLs.Add(i, item.GetURL());
|
||||
|
||||
Button_AddFolderPathItem.transform.SetAsLastSibling();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user