Files
Studio/Assets/NewStudioJYM/Scripts/Panel_DynamicObjectUISetting.cs
2025-05-14 10:45:36 +09:00

68 lines
2.2 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using XRLib.UI;
namespace XED
{
public class Panel_DynamicObjectUISetting : PanelBase
{
private UI_DynamicObjectUISettingItem prf_DynamicObjectUISettingItem;
private UI_DynamicDataStyleItem prf_DynamicDataStyleItem;
private RectTransform DataContent;
private UI_DynamicObjectUISettingItem dynamicObjectUISettingItem;
public override void AfterAwake()
{
prf_DynamicObjectUISettingItem = Resources.Load<UI_DynamicObjectUISettingItem>("Prefabs/UI/PRF_DynamicObjectUISettingItem");
prf_DynamicDataStyleItem = Resources.Load<UI_DynamicDataStyleItem>("Prefabs/UI/PRF_DynamicDataStyleItem");
CloseModal();
}
public void OpenModal()
{
gameObject.SetActive(true); ;
}
public void CloseModal()
{
gameObject.SetActive(false);
}
public void SetData(DataList dynamicObjectDatas, RectTransform targetUI)
{
OpenModal();
SetPosition(targetUI);
if (dynamicObjectDatas == null)
return;
if(dynamicObjectUISettingItem != null)
{
Destroy(dynamicObjectUISettingItem.gameObject);
dynamicObjectUISettingItem = null;
}
var item = Instantiate(prf_DynamicObjectUISettingItem, DataContent);
item.SetData(dynamicObjectDatas, prf_DynamicDataStyleItem);
dynamicObjectUISettingItem = item;
}
private void SetPosition(RectTransform targetUI)
{
if (targetUI == null || rectTransform == null)
return;
Vector3[] targetCorners = new Vector3[4];
targetUI.GetWorldCorners(targetCorners);
Vector3 targetTopRight = targetCorners[2];
float myUIHeight = rectTransform.rect.height;
float myUIPivotY = rectTransform.pivot.y;
Vector3 desiredWorldPos = targetTopRight + new Vector3(rectTransform.sizeDelta.x / 2f, -myUIHeight * (1 - myUIPivotY), 0f);
Vector3 localPos = rectTransform.parent.InverseTransformPoint(desiredWorldPos);
rectTransform.localPosition = localPos;
}
}
}