71 lines
2.1 KiB
C#
71 lines
2.1 KiB
C#
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 uint X_uint;
|
|
[FieldOffset(4)] public uint Y_uint;
|
|
[FieldOffset(8)] public uint Z_uint;
|
|
[FieldOffset(12)] public uint W_uint;
|
|
|
|
[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;
|
|
|
|
public Vec4d(
|
|
float x, float y, float z, float w)
|
|
{
|
|
X = x; Y = y; Z = z; W = w;
|
|
}
|
|
|
|
internal Vec4d(uint x) => X_uint = x;
|
|
|
|
}
|
|
}
|