68 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|