using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Math { [StructLayout(LayoutKind.Sequential)] internal struct M128matMap { internal IntPtr colum0Ptr; internal IntPtr colum1Ptr; internal IntPtr colum2Ptr; internal IntPtr colum3Ptr; internal M128matMap( IntPtr c0ptr, IntPtr c1ptr, IntPtr c2ptr, IntPtr c3ptr ) { colum0Ptr = c0ptr; colum1Ptr = c1ptr; colum2Ptr = c2ptr; colum3Ptr = c3ptr; } } [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] internal struct M128 { [FieldOffset(0)] internal float single_0; [FieldOffset(4)] internal float single_1; [FieldOffset(8)] internal float single_2; [FieldOffset(12)] internal float single_3; [FieldOffset(0)] internal int int32_0; [FieldOffset(4)] internal int int32_1; [FieldOffset(8)] internal int int32_2; [FieldOffset(12)] internal int int32_3; [FieldOffset(0)] internal long int64_0; [FieldOffset(8)] internal long int64_1; [FieldOffset(0)] internal IntPtr ptr_0; [FieldOffset(8)] internal IntPtr ptr_1; [FieldOffset(0)] internal long double_0; [FieldOffset(8)] internal long double_1; internal M128(float x,float y,float z,float w) { single_0 = x; single_1 = y; single_2 = z; single_3 = w; } public override string ToString() { return $"{single_0}\t{single_1}\t{single_2}\t{single_3}"; } } }