164 lines
5.5 KiB
C#
164 lines
5.5 KiB
C#
using UnityEngine;
|
|
using XRLib.UI;
|
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
using Studio.Util;
|
|
using Studio.Repositories;
|
|
|
|
namespace Studio.UI
|
|
{
|
|
public class Panel_3DFactorySetting : PanelBase
|
|
{
|
|
private RectTransform Content;
|
|
|
|
private RectTransform Panel_3DGenerationSetting;
|
|
private Button Button_AddDynamicObjectItem;
|
|
private RectTransform DynamicObjectItemContent;
|
|
|
|
private UI_DynamicObjectItem prf_dynamicObjectItem;
|
|
private List<UI_DynamicObjectItem> dynamicObjectItems = new List<UI_DynamicObjectItem>();
|
|
|
|
private List<string> dataList = new List<string>();
|
|
private List<CustomAssetData> modelList = new List<CustomAssetData>();
|
|
|
|
public Action<UI_DynamicObjectItem> onUISetting;
|
|
public Dynamic3DModelSetting saveModelDatas;
|
|
public Action onClose;
|
|
|
|
public void Active(bool isActive)
|
|
{
|
|
gameObject.SetActive(isActive);
|
|
|
|
if (!isActive)
|
|
{
|
|
onClose?.Invoke();
|
|
}
|
|
}
|
|
public override void AfterAwake()
|
|
{
|
|
prf_dynamicObjectItem = Resources.Load<UI_DynamicObjectItem>("Prefabs/UI/PRF_DynamicObjectItem");
|
|
Button_AddDynamicObjectItem.onClick.AddListener(OnClickAddDynamicObjectButton);
|
|
|
|
dynamicObjectItems.Clear();
|
|
}
|
|
public void SetDataDropdownData(MQTTSetting mqttSetting)
|
|
{
|
|
if (mqttSetting == null)
|
|
return;
|
|
|
|
dataList.Clear();
|
|
|
|
foreach (var mqttConnection in mqttSetting.mqttConnections)
|
|
{
|
|
foreach(var mqttTopic in mqttConnection.topics)
|
|
{
|
|
var dataName = $"{mqttConnection.domain}/{mqttConnection.port}/{mqttTopic.topic}";
|
|
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()
|
|
{
|
|
var item = Instantiate(prf_dynamicObjectItem, DynamicObjectItemContent);
|
|
item.onUISetting += OnUISetting;
|
|
item.onRemoveItem += OnRemoveItem;
|
|
item.SetData(dataList, modelList);
|
|
dynamicObjectItems.Add(item);
|
|
|
|
UpdateLayoutAddItem();
|
|
}
|
|
private void UpdateLayoutAddItem()
|
|
{
|
|
var sizeDelta = Panel_3DGenerationSetting.sizeDelta;
|
|
sizeDelta.y += prf_dynamicObjectItem.rectTransform.rect.height + 10f;
|
|
|
|
Panel_3DGenerationSetting.sizeDelta = sizeDelta;
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(Content);
|
|
|
|
Button_AddDynamicObjectItem.transform.SetAsLastSibling();
|
|
}
|
|
private void UpdateLayoutRemoveItem()
|
|
{
|
|
var sizeDelta = Panel_3DGenerationSetting.sizeDelta;
|
|
sizeDelta.y -= prf_dynamicObjectItem.rectTransform.rect.height + 10f;
|
|
|
|
Panel_3DGenerationSetting.sizeDelta = sizeDelta;
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(Content);
|
|
|
|
Button_AddDynamicObjectItem.transform.SetAsLastSibling();
|
|
}
|
|
private void OnUISetting(UI_DynamicObjectItem rectTransform)
|
|
{
|
|
onUISetting?.Invoke(rectTransform);
|
|
}
|
|
private void OnRemoveItem(UI_DynamicObjectItem item)
|
|
{
|
|
dynamicObjectItems.Remove(item);
|
|
Destroy(item.gameObject);
|
|
UpdateLayoutRemoveItem();
|
|
}
|
|
public Dynamic3DModelSetting GetDynamic3DModelSetting()
|
|
{
|
|
var dynamic3DModelSetting = new Dynamic3DModelSetting();
|
|
foreach(var modelData in dynamicObjectItems)
|
|
{
|
|
dynamic3DModelSetting.modelDatas.Add(modelData.GetDynamic3DModelConnection());
|
|
}
|
|
return dynamic3DModelSetting;
|
|
}
|
|
|
|
public Dictionary<string,CustomAssetData> GetAssetDatas()
|
|
{
|
|
var datas = new Dictionary<string, CustomAssetData>();
|
|
foreach (var modelData in dynamicObjectItems)
|
|
{
|
|
var splitdata = modelData.GetDynamic3DModelConnection().dataName.Split('/');
|
|
var topic = splitdata[splitdata.Length - 1];
|
|
datas.Add(topic, modelData.selectedModel);
|
|
}
|
|
return datas;
|
|
}
|
|
public void SetDynamic3DModelSetting(Dynamic3DModelSetting saveModelDatas)
|
|
{
|
|
foreach(var item in dynamicObjectItems)
|
|
{
|
|
Destroy(item.gameObject);
|
|
UpdateLayoutRemoveItem();
|
|
}
|
|
dynamicObjectItems.Clear();
|
|
|
|
if (saveModelDatas == null)
|
|
return;
|
|
|
|
foreach(var modelData in saveModelDatas.modelDatas)
|
|
{
|
|
var item = Instantiate(prf_dynamicObjectItem, DynamicObjectItemContent);
|
|
item.onUISetting += OnUISetting;
|
|
item.onRemoveItem += OnRemoveItem;
|
|
item.SetData(dataList, modelList);
|
|
item.SetModelData(modelData);
|
|
dynamicObjectItems.Add(item);
|
|
|
|
UpdateLayoutAddItem();
|
|
}
|
|
}
|
|
}
|
|
}
|