101 lines
5.2 KiB
C#

// ReSharper disable AnnotateNotNullParameter
using UnityEngine;
namespace PrimeTween {
internal static class Extensions {
internal static float CalcDistance(Vector3 v1, Vector3 v2) => Vector3.Distance(v1, v2);
internal static float CalcDistance(Quaternion q1, Quaternion q2) => Quaternion.Angle(q1, q2);
internal static float calcDelta(this float val, ValueContainer prevVal) => val - prevVal.FloatVal;
internal static double calcDelta(this double val, ValueContainer prevVal) => val - prevVal.DoubleVal;
internal static Color calcDelta(this Color val, ValueContainer prevVal) => val - prevVal.ColorVal;
internal static Vector2 calcDelta(this Vector2 val, ValueContainer prevVal) => val - prevVal.Vector2Val;
internal static Vector3 calcDelta(this Vector3 val, ValueContainer prevVal) => val - prevVal.Vector3Val;
internal static Vector4 calcDelta(this Vector4 val, ValueContainer prevVal) => val - prevVal.Vector4Val;
internal static Quaternion calcDelta(this Quaternion val, ValueContainer prevVal) => Quaternion.Inverse(prevVal.QuaternionVal) * val;
internal static Rect calcDelta(this Rect val, ValueContainer prevVal) => new Rect(
val.x - prevVal.x,
val.y - prevVal.y,
val.width - prevVal.z,
val.height - prevVal.w);
internal static Color WithAlpha(this Color c, float alpha) {
c.a = alpha;
return c;
}
internal static ValueContainer ToContainer(this float f) => new ValueContainer { FloatVal = f };
internal static ValueContainer ToContainer(this Vector2 v) => new ValueContainer { Vector2Val = v };
internal static ValueContainer ToContainer(this Vector3 v) => new ValueContainer { Vector3Val = v };
internal static ValueContainer ToContainer(this Vector4 v) => new ValueContainer { Vector4Val = v };
internal static ValueContainer ToContainer(this Color c) => new ValueContainer { ColorVal = c };
internal static ValueContainer ToContainer(this Quaternion q) => new ValueContainer { QuaternionVal = q };
internal static ValueContainer ToContainer(this Rect r) => new ValueContainer { RectVal = r };
internal static ValueContainer ToContainer(this double d) => new ValueContainer { DoubleVal = d };
internal static Vector2 WithComponent(this Vector2 v, int index, float val) {
v[index] = val;
return v;
}
internal static Vector3 WithComponent(this Vector3 v, int index, float val) {
v[index] = val;
return v;
}
#if !UNITY_2019_1_OR_NEWER || UNITY_UGUI_INSTALLED
internal static Vector2 GetFlexibleSize(this UnityEngine.UI.LayoutElement target) => new Vector2(target.flexibleWidth, target.flexibleHeight);
internal static void SetFlexibleSize(this UnityEngine.UI.LayoutElement target, Vector2 vector2) {
target.flexibleWidth = vector2.x;
target.flexibleHeight = vector2.y;
}
internal static Vector2 GetMinSize(this UnityEngine.UI.LayoutElement target) => new Vector2(target.minWidth, target.minHeight);
internal static void SetMinSize(this UnityEngine.UI.LayoutElement target, Vector2 vector2) {
target.minWidth = vector2.x;
target.minHeight = vector2.y;
}
internal static Vector2 GetPreferredSize(this UnityEngine.UI.LayoutElement target) => new Vector2(target.preferredWidth, target.preferredHeight);
internal static void SetPreferredSize(this UnityEngine.UI.LayoutElement target, Vector2 vector2) {
target.preferredWidth = vector2.x;
target.preferredHeight = vector2.y;
}
internal static Vector2 GetNormalizedPosition(this UnityEngine.UI.ScrollRect target) => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition);
internal static void SetNormalizedPosition(this UnityEngine.UI.ScrollRect target, Vector2 vector2) {
target.horizontalNormalizedPosition = vector2.x;
target.verticalNormalizedPosition = vector2.y;
}
#endif
#if UI_ELEMENTS_MODULE_INSTALLED
internal static Vector2 GetTopLeft(this UnityEngine.UIElements.VisualElement e) {
var resolvedStyle = e.resolvedStyle;
return new Vector2(resolvedStyle.left, resolvedStyle.top);
}
internal static void SetTopLeft(this UnityEngine.UIElements.VisualElement e, Vector2 c) {
var style = e.style;
style.left = c.x;
style.top = c.y;
}
internal static Rect GetResolvedStyleRect(this UnityEngine.UIElements.VisualElement e) {
var resolvedStyle = e.resolvedStyle;
return new Rect(
resolvedStyle.left,
resolvedStyle.top,
resolvedStyle.width,
resolvedStyle.height
);
}
internal static void SetStyleRect(this UnityEngine.UIElements.VisualElement e, Rect c) {
var style = e.style;
style.left = c.x;
style.top = c.y;
style.width = c.width;
style.height = c.height;
}
#endif
}
}