Files
Studio/Assets/Scripts/Studio/UI/Elements/UI_DynamicObjectItem.cs
2025-05-20 18:40:07 +09:00

109 lines
3.5 KiB
C#

using UnityEngine;
using XRLib.UI;
using TMPro;
using UnityEngine.UI;
using Newtonsoft.Json;
using System.Collections.Generic;
using System;
namespace Studio
{
public class UI_DynamicObjectItem : UIBase
{
private TMP_Dropdown Dropdown_Data;
private Button Button_SelectModel;
private TMP_Dropdown Dropdown_Model;
private Button Button_UISetting;
public DynamicObjectDatas dynamicObjectDatas;
public DataList selectDynamicObjectData;
public ModelList modelData;
public string selectedModel;
public Action<UI_DynamicObjectItem> onUISetting;
public void SetData(DynamicObjectDatas dynamicObjectDatas, ModelList modelList)
{
this.dynamicObjectDatas = dynamicObjectDatas;
this.modelData = modelList;
SetDataDropdown();
SetModelDropdown();
Button_SelectModel.onClick.AddListener(OnClickSelectModelButton);
Button_UISetting.onClick.AddListener(OnClickUISettingButton);
}
private void SetDataDropdown()
{
Dropdown_Data.ClearOptions();
List<string> options = new List<string>();
options.Add("Select URL");
foreach(var dynamicObjectData in dynamicObjectDatas.dataList)
{
options.Add(dynamicObjectData.name);
}
Dropdown_Data.AddOptions(options);
Dropdown_Data.onValueChanged.AddListener(OnDataValueChanged);
}
private void OnDataValueChanged(int index)
{
if (index - 1 < 0)
return;
selectDynamicObjectData = dynamicObjectDatas.dataList[index - 1];
}
private void SetModelDropdown()
{
Dropdown_Model.ClearOptions();
List<string> options = new List<string>();
options.Add("Select Model");
foreach (var dynamicObjectData in modelData.modelList)
{
options.Add(dynamicObjectData.modelName);
}
Dropdown_Model.AddOptions(options);
Dropdown_Model.onValueChanged.AddListener(OnModelValueChanged);
}
private void OnModelValueChanged(int index)
{
if (index - 1 < 0)
return;
selectDynamicObjectData = dynamicObjectDatas.dataList[Dropdown_Data.value - 1];
selectedModel = modelData.modelList[index - 1].modelName;
}
private void OnClickSelectModelButton()
{
Dropdown_Model.Show();
}
private void OnClickUISettingButton()
{
if (selectDynamicObjectData != null && selectedModel != string.Empty)
{
onUISetting?.Invoke(this);
}
}
public ModelData GetModelData()
{
var modelData = new ModelData();
modelData.dataName = Dropdown_Data.options[Dropdown_Data.value].text;
modelData.modelName = Dropdown_Model.options[Dropdown_Model.value].text;
modelData.modelData = selectDynamicObjectData;
return modelData;
}
public void SetModelData(ModelData modelData)
{
Dropdown_Data.value = Dropdown_Data.options.FindIndex(option => option.text == modelData.dataName);
Dropdown_Model.value = Dropdown_Model.options.FindIndex(option => option.text == modelData.modelName);
selectDynamicObjectData = modelData.modelData;
}
}
}