using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace VketCloudGUITools.Runtime
{
[RequireComponent(typeof(RectTransform))]
[RequireComponent(typeof(VCGUIContent))]
public class VCTransform : MonoBehaviour
{
[SerializeField] public AnchorType Anchor = AnchorType.CM;
[SerializeField] public Vector2Int Pos;
[SerializeField] public Vector2Int Size = new Vector2Int(100, 100);
[SerializeField] public Vector2 Pivot = new Vector2(0.5f, 0.5f);
[SerializeField] public int Z = 0;
public Vector3Int Pos3D
{
get => new Vector3Int(Pos.x, Pos.y, 0);
set
{
var v = value;
Pos = new Vector2Int(v.x, v.y);
}
}
///
/// VCGUITransformの設定をRectTransformに反映
///
public void ApplyTransform()
{
var rectTransform = this.GetComponent();
if (rectTransform == null)
return;
rectTransform.anchoredPosition = new Vector2(this.Pos.x, 0 - this.Pos.y);
rectTransform.localPosition = new Vector3(rectTransform.localPosition.x, rectTransform.localPosition.y, 0f);
rectTransform.sizeDelta = this.Size;
rectTransform.pivot = new Vector2(this.Pivot.x, 1f - this.Pivot.y);
rectTransform.anchorMin = rectTransform.anchorMax = this.Anchor.ToVector2();
this.Pos = new Vector2Int((int)rectTransform.anchoredPosition.x, 0 - (int)rectTransform.anchoredPosition.y);
}
///
/// RectTransformの設定をVCGUITransformに反映
///
public void GatherTransform()
{
var rectTransform = GetComponent();
Pos = new Vector2Int((int)rectTransform.anchoredPosition.x, 0 - (int)rectTransform.anchoredPosition.y);
Size = new Vector2Int((int)rectTransform.sizeDelta.x, (int)rectTransform.sizeDelta.y);
Pivot = new Vector2(rectTransform.pivot.x, 1f - rectTransform.pivot.y);
if (rectTransform.anchorMin != rectTransform.anchorMax)
Anchor = AnchorType.LT;
else
Anchor = rectTransform.anchorMin.ToAnchorType();
}
}
}