Beispiel #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="self"></param>
 public static void ClearLayouts(this ILayoutTarget self)
 {
     while (0 < self.Layouts.Count)
     {
         self.RemoveLayout(self.Layouts[self.Layouts.Count - 1]);
     }
 }
Beispiel #2
0
        /// <summary>
        /// 親のサイズが変更された時はAnchorMin/MaxとAnchorOffsetMin/Maxが変更されないようにパラメータを変更してください
        /// </summary>
        /// <param name="parent"></param>
        void ParentOnChangedLocalSize(ILayoutTarget parent, Vector3 prevLocalSize)
        {
            if (parent != Parent)
            {
                return;
            }

            if (IsAutoUpdate)
            {
                FollowParent();
            }
        }
Beispiel #3
0
 public static IEnumerable <ILayoutTarget> GetHierarchyEnumerable(this ILayoutTarget self)
 {
     return(new HierachyEnumerable(self));
 }
Beispiel #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static IEnumerable <ILayoutTarget> GetParentEnumerable(this ILayoutTarget self)
 {
     return(new ParentEnumerable(self));
 }
Beispiel #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static LayoutTargetAnchorMode AnchorMode(this ILayoutTarget self)
 {
     return(self.AnchorMin.AreNearlyEqual(self.AnchorMax, LayoutDefines.NUMBER_PRECISION)
         ? LayoutTargetAnchorMode.Point
         : LayoutTargetAnchorMode.Area);
 }
Beispiel #6
0
 /// <summary>
 /// この関数はILayoutTarget.UpdateLocalSizeWithAnchorParam(self.AnchorMin, self.AnchorMax, min, max)と同じです。
 /// </summary>
 /// <param name="self"></param>
 /// <param name="min"></param>
 /// <param name="max"></param>
 public static void SetAnchorOffset(this ILayoutTarget self, Vector3 min, Vector3 max)
 {
     self.UpdateAnchorParam(self.AnchorMin, self.AnchorMax, min, max);
 }
Beispiel #7
0
        /// <summary>
        /// この関数はILayoutTarget.UpdateLocalSizeWithAnchorParam(min, max, self.AnchorOffsetMin, self.AnchorOffsetMax)と同じです。
        /// </summary>
        /// <param name="self"></param>
        /// <param name="min"></param>
        /// <param name="max"></param>
        public static void SetAnchor(this ILayoutTarget self, Vector3 min, Vector3 max)
        {
            var offset = self.AnchorOffsetMinMax();

            self.UpdateAnchorParam(min, max, offset.offsetMin, offset.offsetMax);
        }
Beispiel #8
0
 /// <summary>
 /// Pivotによるオフセットを計算します。
 /// ILayoutTarget#Offsetの影響はないものになります。
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static Vector3 PivotOffset(this ILayoutTarget self)
 {
     return(-self.LocalSize.Mul(self.Pivot - Vector3.one * 0.5f));
 }
Beispiel #9
0
        /// <summary>
        /// LocalSizeを指定したサイズに変更します。
        ///
        /// この関数によってAnchorMin/Max, Offsetは変更されません。
        /// </summary>
        /// <param name="self"></param>
        /// <param name="min"></param>
        public static void SetLocalSize(this ILayoutTarget self, Vector3 localSize)
        {
            localSize = Vector3.Max(localSize, Vector3.zero);

            self.UpdateLocalSize(localSize, self.Offset);
        }
Beispiel #10
0
 /// <summary>
 /// AnchorAreaからのLocalSizeのオフセットを返します。
 /// 返される値の正負はAnchorAreaから外側方向に正の数、内側に負の数になっています。
 ///
 ///
 /// + | - <- AnchorOffsetMin
 /// --a-----O-----A---
 ///             - | + AnchorOffsetMax
 ///
 /// a: AnchorMinPos
 /// A: AnchorMaxPos
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static (Vector3 offsetMin, Vector3 offsetMax) AnchorOffsetMinMax(this ILayoutTarget self)
 {
     var(min, max)           = self.AnchorAreaMinMaxPos();
     var(localMin, localMax) = self.LocalAreaMinMaxPos();
     return(-(localMin - min), localMax - max);
 }
Beispiel #11
0
        /// <summary>
        /// 自身のローカル領域のMin/Max位置を取得する。
        ///
        /// AnchorOffsetMin/Maxの影響を受けます。
        /// </summary>
        /// <param name="self"></param>
        /// <returns></returns>
        public static (Vector3 min, Vector3 max) LocalAreaMinMaxPos(this ILayoutTarget self)
        {
            var halfSize = self.LocalSize * 0.5f;

            return(-halfSize + self.Offset, halfSize + self.Offset);
        }
Beispiel #12
0
        /// <summary>
        /// アンカー領域のMin/Max位置を取得する。
        ///
        /// この関数の返り値はAnchorOffsetMin/Maxの影響を受けません。
        /// </summary>
        /// <param name="self"></param>
        /// <returns></returns>
        public static (Vector3 min, Vector3 max) AnchorAreaMinMaxPos(this ILayoutTarget self)
        {
            var halfParentAreaSize = self.AnchorAreaSize() * 0.5f;

            return(-halfParentAreaSize, halfParentAreaSize);
        }
Beispiel #13
0
 /// <summary>
 /// 現在のアンカー領域のサイズを返します。
 ///
 /// AnchorMode() == Pointの場合は0サイズを返します。
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static Vector3 AnchorAreaSize(this ILayoutTarget self)
 {
     return(self.PrevParentSize.Mul(self.AnchorMax - self.AnchorMin));
 }
Beispiel #14
0
 /// <summary>
 /// ParentがNullの場合は0サイズを返します。
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static Vector3 ParentLocalSize(this ILayoutTarget self)
 => self.Parent?.LocalSize ?? Vector3.zero;
Beispiel #15
0
 /// <summary>
 /// レイアウト計算用のサイズを返します。
 /// </summary>
 /// <param name="self"></param>
 /// <returns></returns>
 public static Vector3 LayoutSize(this ILayoutTarget self)
 {
     return(self.LayoutInfo.GetLayoutSize(self));
 }
Beispiel #16
0
 /// <summary>
 /// この関数はILayoutTarget.UpdateLocalSizeWithSizeAndAnchorParam(self.LocalSize, offset)と同じです。
 /// </summary>
 /// <param name="self"></param>
 /// <param name="offset"></param>
 public static void SetOffset(this ILayoutTarget self, Vector3 offset)
 {
     self.UpdateLocalSize(self.LocalSize, offset);
 }
Beispiel #17
0
 virtual protected void InnerOnChangedTarget(ILayoutTarget current, ILayoutTarget prev)
 {
 }
Beispiel #18
0
 protected override void InnerOnChangedTarget(ILayoutTarget current, ILayoutTarget prev)
 {
     CallCounterOnChangedTarget++;
     CurrentOnChangedTarget = current;
     PrevOnChangedTarget    = prev;
 }