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(); } } }