충돌 해결

This commit is contained in:
정영민
2025-05-26 11:00:28 +09:00
7 changed files with 208 additions and 12 deletions

View File

@@ -831,6 +831,7 @@ GameObject:
- component: {fileID: 6954167609728662753} - component: {fileID: 6954167609728662753}
- component: {fileID: 8549676201747870985} - component: {fileID: 8549676201747870985}
- component: {fileID: 7236664214523229146} - component: {fileID: 7236664214523229146}
- component: {fileID: 8105564570549308953}
m_Layer: 5 m_Layer: 5
m_Name: Panel_AssetManager m_Name: Panel_AssetManager
m_TagString: Untagged m_TagString: Untagged
@@ -909,6 +910,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 25457a0961cc0bb4a949d5fe58c2ada6, type: 3} m_Script: {fileID: 11500000, guid: 25457a0961cc0bb4a949d5fe58c2ada6, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: 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 --- !u!1 &2774336303168765450
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -6984,6 +6984,74 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Panel_AssetManager value: Panel_AssetManager
objectReference: {fileID: 0} 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} - target: {fileID: 7257151592976347537, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_Pivot.x propertyPath: m_Pivot.x
value: 0.5 value: 0.5
@@ -7064,6 +7132,46 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 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_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []

View File

@@ -117,8 +117,36 @@ namespace Studio.AssetTool
} }
yield return null; yield return null;
} }
} }
private void OnLoadAssetSelected(AssetLibraryItem item, AssetData asset)
{
if (item == null || item.linkedObject == null)
{
selectedAssetData = null;
return;
}
selectedAssetData = item.linkedObject.GetComponent<CustomAssetData>();
if (selectedAssetData == null || selectedAssetData.isLoadComplete == false)
{
selectedAssetData = null;
return;
}
selectedItem = UnityEngine.GameObject.Instantiate(renderObjectPrefab);
selectRenderObject = selectedItem.GetComponent<CustomAssetRenderObject>();
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) public void OnAssetSelected(AssetLibraryItem item)
{ {
if (item == null || item.linkedObject == null) if (item == null || item.linkedObject == null)
@@ -190,10 +218,7 @@ namespace Studio.AssetTool
public void OnLoadAsset(AssetData asset) public void OnLoadAsset(AssetData asset)
{ {
AssetLibraryItem item = assetScrollView.FindItem(asset.name, AssetLibraryItemType.file); AssetLibraryItem item = assetScrollView.FindItem(asset.name, AssetLibraryItemType.file);
OnAssetSelected(item); OnLoadAssetSelected(item, asset);
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);
OnAssetDropped(item); OnAssetDropped(item);
} }

View File

@@ -55,11 +55,11 @@ namespace Studio.AssetTool
var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories); var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
if (dataRepo.TryGetDataFromPath(path, out var p))
return;
foreach (var file in files) foreach (var file in files)
{ {
if (dataRepo.TryGetDataFromPath(path, out var p))
continue;
filePaths.Add(file); filePaths.Add(file);
} }
@@ -74,6 +74,9 @@ namespace Studio.AssetTool
var directoryPath = Path.GetDirectoryName(file); var directoryPath = Path.GetDirectoryName(file);
var folderName = Path.GetFileName(directoryPath); var folderName = Path.GetFileName(directoryPath);
if (dataRepo.TryGetDataFromName(assetName, out var p))
continue;
GameObject newObject = new GameObject(assetName); GameObject newObject = new GameObject(assetName);
newObject.transform.parent = fbxAnchor; newObject.transform.parent = fbxAnchor;
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>(); CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
@@ -89,6 +92,7 @@ namespace Studio.AssetTool
OnLoadComplete(assetData); OnLoadComplete(assetData);
} }
onLoadComplete?.Invoke();
} }
public void SaveToLocalData(List<CustomAssetData> assetDatas, string path = "") public void SaveToLocalData(List<CustomAssetData> assetDatas, string path = "")
@@ -231,7 +235,6 @@ namespace Studio.AssetTool
connector.assetScrollView.AddItem(folderName, null, AssetLibraryItemType.folder); connector.assetScrollView.AddItem(folderName, null, AssetLibraryItemType.folder);
AssetLibraryItem item = connector.assetScrollView.AddItem(assetData.assetName, assetData.gameObject, AssetLibraryItemType.file, urlSectionItem); AssetLibraryItem item = connector.assetScrollView.AddItem(assetData.assetName, assetData.gameObject, AssetLibraryItemType.file, urlSectionItem);
onLoadComplete?.Invoke();
} }
} }
} }

View File

@@ -31,6 +31,7 @@ namespace Studio
fbxFileManager.onLoadComplete += OnLoadCustomAsset; fbxFileManager.onLoadComplete += OnLoadCustomAsset;
onAssetManagerDatas += canvas_Popup.panel_assetmanager.SetAssetManager; onAssetManagerDatas += canvas_Popup.panel_assetmanager.SetAssetManager;
onAssetManagerDatas += (data) => projectManager.OpenProjectSettingsDataAfterDataLoad(); onAssetManagerDatas += (data) => projectManager.OpenProjectSettingsDataAfterDataLoad();
} }
public void LoadLocalFBXDirectorys(List<string> folderPaths) public void LoadLocalFBXDirectorys(List<string> folderPaths)
{ {
@@ -80,13 +81,12 @@ namespace Studio
{ {
var connector = ManagerHub.instance.Get<CustomAssetConnector>(); var connector = ManagerHub.instance.Get<CustomAssetConnector>();
connector.OnLoadAsset(asset); connector.OnLoadAsset(asset);
itemDict.Add(asset.id, connector.connectedAssets.Last().hierarchyItem);
} }
private void RestoreHierarchy(AssetData asset) private void RestoreHierarchy(AssetData asset)
{ {
var connector = ManagerHub.instance.Get<CustomAssetConnector>(); var connector = ManagerHub.instance.Get<CustomAssetConnector>();
itemDict.TryAdd(asset.id, connector.connectedAssets.Last().hierarchyItem);
foreach (int id in asset.children) foreach (int id in asset.children)
{ {

View File

@@ -7,6 +7,7 @@ using System.Collections.Generic;
using System; using System;
using Studio.Util; using Studio.Util;
using Studio.AssetTool; using Studio.AssetTool;
using System.Linq;
namespace Studio namespace Studio
{ {
@@ -27,6 +28,30 @@ namespace Studio
public Action<UI_DynamicObjectItem> onUISetting; public Action<UI_DynamicObjectItem> onUISetting;
public Action<UI_DynamicObjectItem> onRemoveItem; public Action<UI_DynamicObjectItem> onRemoveItem;
public void SetDataList(List<string> 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<CustomAssetData> 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<string> dataList, List<CustomAssetData> modelList) public void SetData(List<string> dataList, List<CustomAssetData> modelList)
{ {
this.dataList = dataList; this.dataList = dataList;
@@ -106,7 +131,11 @@ namespace Studio
{ {
var dynamic3DModelConnection = new Dynamic3DModelConnection(); var dynamic3DModelConnection = new Dynamic3DModelConnection();
dynamic3DModelConnection.dataName = Dropdown_Data.options[Dropdown_Data.value].text; dynamic3DModelConnection.dataName = Dropdown_Data.options[Dropdown_Data.value].text;
dynamic3DModelConnection.modelName = selectedModel.assetName;
if (selectedModel != null)
{
dynamic3DModelConnection.modelName = selectedModel.assetName;
}
dynamic3DModelConnection.modelUISettingData = selectDynamicObjectData; dynamic3DModelConnection.modelUISettingData = selectDynamicObjectData;
return dynamic3DModelConnection; return dynamic3DModelConnection;

View File

@@ -51,7 +51,9 @@ namespace Studio
if (mqttSetting == null) if (mqttSetting == null)
return; return;
foreach(var mqttConnection in mqttSetting.mqttConnections) dataList.Clear();
foreach (var mqttConnection in mqttSetting.mqttConnections)
{ {
foreach(var mqttTopic in mqttConnection.topics) foreach(var mqttTopic in mqttConnection.topics)
{ {
@@ -59,11 +61,22 @@ namespace Studio
dataList.Add(dataName); dataList.Add(dataName);
} }
} }
foreach(var item in dynamicObjectItems)
{
item.SetDataList(dataList);
}
} }
public void SetModelDropdownData(CustomAssetDataRepository customAssetDataRepository) public void SetModelDropdownData(CustomAssetDataRepository customAssetDataRepository)
{ {
modelList.Clear();
var assetDatas = customAssetDataRepository.assetDatas; var assetDatas = customAssetDataRepository.assetDatas;
modelList.AddRange(assetDatas); modelList.AddRange(assetDatas);
foreach (var item in dynamicObjectItems)
{
item.SetModelList(modelList);
}
} }
private void OnClickAddDynamicObjectButton() private void OnClickAddDynamicObjectButton()
{ {