97 lines
3.0 KiB
C#
97 lines
3.0 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using UnityEngine;
|
|
|
|
namespace PrimeTween {
|
|
[Serializable]
|
|
internal struct ValueContainerStartEnd {
|
|
[SerializeField] internal TweenType tweenType; // todo HideInInspector?
|
|
[SerializeField, Tooltip(Constants.startFromCurrentTooltip)] internal bool startFromCurrent;
|
|
[SerializeField, Tooltip(Constants.startValueTooltip)] internal ValueContainer startValue;
|
|
[SerializeField, Tooltip(Constants.endValueTooltip)] internal ValueContainer endValue;
|
|
}
|
|
|
|
[Serializable, StructLayout(LayoutKind.Explicit)]
|
|
internal struct ValueContainer {
|
|
// todo check if it was possible to modify ValueContainer in Debug Inspector before
|
|
[FieldOffset(sizeof(float) * 0), SerializeField] internal float x;
|
|
[FieldOffset(sizeof(float) * 1), SerializeField] internal float y;
|
|
[FieldOffset(sizeof(float) * 2), SerializeField] internal float z;
|
|
[FieldOffset(sizeof(float) * 3), SerializeField] internal float w;
|
|
[FieldOffset(0), NonSerialized] internal float FloatVal;
|
|
[FieldOffset(0), NonSerialized] internal Color ColorVal;
|
|
[FieldOffset(0), NonSerialized] internal Vector2 Vector2Val;
|
|
[FieldOffset(0), NonSerialized] internal Vector3 Vector3Val;
|
|
[FieldOffset(0), NonSerialized] internal Vector4 Vector4Val;
|
|
[FieldOffset(0), NonSerialized] internal Quaternion QuaternionVal;
|
|
[FieldOffset(0), NonSerialized] internal Rect RectVal;
|
|
[FieldOffset(0), NonSerialized] internal double DoubleVal;
|
|
|
|
internal void CopyFrom(ref float val) {
|
|
x = val;
|
|
y = 0f;
|
|
z = 0f;
|
|
w = 0f;
|
|
}
|
|
|
|
internal void CopyFrom(ref Color val) {
|
|
x = val.r;
|
|
y = val.g;
|
|
z = val.b;
|
|
w = val.a;
|
|
}
|
|
|
|
internal void CopyFrom(ref Vector2 val) {
|
|
x = val.x;
|
|
y = val.y;
|
|
z = 0f;
|
|
w = 0f;
|
|
}
|
|
|
|
internal void CopyFrom(ref Vector3 val) {
|
|
x = val.x;
|
|
y = val.y;
|
|
z = val.z;
|
|
w = 0f;
|
|
}
|
|
|
|
internal void CopyFrom(ref Vector4 val) {
|
|
x = val.x;
|
|
y = val.y;
|
|
z = val.z;
|
|
w = val.w;
|
|
}
|
|
|
|
internal void CopyFrom(ref Rect val) {
|
|
x = val.x;
|
|
y = val.y;
|
|
z = val.width;
|
|
w = val.height;
|
|
}
|
|
|
|
internal void CopyFrom(ref Quaternion val) {
|
|
x = val.x;
|
|
y = val.y;
|
|
z = val.z;
|
|
w = val.w;
|
|
}
|
|
|
|
internal void CopyFrom(ref double val) {
|
|
DoubleVal = val;
|
|
z = 0f;
|
|
w = 0f;
|
|
}
|
|
|
|
internal void Reset() {
|
|
x = y = z = w = 0f;
|
|
}
|
|
|
|
internal float this[int i] {
|
|
get => Vector4Val[i];
|
|
set => Vector4Val[i] = value;
|
|
}
|
|
|
|
public override string ToString() => Vector4Val.ToString();
|
|
}
|
|
}
|