using StgSharp.Controlling; using StgSharp.Math; using System.Numerics; using System.Runtime.InteropServices; namespace StgSharp.Math { [StructLayout(LayoutKind.Sequential)] internal struct M128F { internal float X; internal float Y; internal float Z; internal float W; } [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] public struct Vec4d { [FieldOffset(0)] internal Vector4 vec; [FieldOffset(0)] internal M128F fvec; [FieldOffset(0)] public float X; [FieldOffset(4)] public float Y; [FieldOffset(8)] public float Z; [FieldOffset(12)] public float W; [FieldOffset(0)] public int X_int; [FieldOffset(4)] public int Y_int; [FieldOffset(8)] public int Z_int; [FieldOffset(12)] public int W_int; [FieldOffset(0)] public long X_long; [FieldOffset(8)] public long Y_long; [FieldOffset(0)] public long X_ulong; [FieldOffset(8)] public long Y_ulong; [FieldOffset(0)] public byte byte_0; [FieldOffset(1)] public byte byte_1; [FieldOffset(2)] public byte byte_2; [FieldOffset(3)] public byte byte_3; [FieldOffset(4)] public byte byte_4; [FieldOffset(5)] public byte byte_5; [FieldOffset(6)] public byte byte_6; [FieldOffset(7)] public byte byte_7; [FieldOffset(8)] public byte byte_8; [FieldOffset(9)] public byte byte_9; [FieldOffset(10)] public byte byte_10; [FieldOffset(11)] public byte byte_11; [FieldOffset(12)] public byte byte_12; [FieldOffset(13)] public byte byte_13; [FieldOffset(14)] public byte byte_14; [FieldOffset(15)] public byte byte_15; unsafe public Vec4d( float x, float y, float z, float w) { X = x; Y = y; Z = z; W = w; } } }