daily update on 20230730 by nitload youmu, 5th day of params displacement
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
public static partial class Instruction
|
||||
{
|
||||
public static unsafe void RecycleMappedVec(Vec4d vec)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
public static class TimeLine
|
||||
public static partial class TimeLine
|
||||
{
|
||||
public const long version = 10;
|
||||
|
||||
@@ -23,6 +23,14 @@ namespace StgSharp.Control
|
||||
internal static TimelineBlock currentOperation;
|
||||
private static bool isPaused = false;
|
||||
|
||||
static unsafe TimeLine()
|
||||
{
|
||||
|
||||
allForm = new LinkedList<Form>();
|
||||
allPool = new LinkedList<Pool>();
|
||||
internalIO.InternalInitGL();
|
||||
}
|
||||
|
||||
public static TimelineBlock CurrentOperation
|
||||
{
|
||||
get { return currentOperation; }
|
||||
@@ -36,13 +44,6 @@ namespace StgSharp.Control
|
||||
}
|
||||
}
|
||||
|
||||
static TimeLine()
|
||||
{
|
||||
allForm = new LinkedList<Form>();
|
||||
allPool = new LinkedList<Pool>();
|
||||
internalIO.InternalInitGL();
|
||||
}
|
||||
|
||||
public static void OnRender()
|
||||
{
|
||||
tickCounter.QuickAdd();
|
||||
|
||||
@@ -6,20 +6,31 @@ using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
|
||||
|
||||
|
||||
internal static unsafe partial class internalIO
|
||||
{
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "VecAddVec",
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "VecAddVec",
|
||||
CallingConvention =CallingConvention.Cdecl)]
|
||||
internal static extern M128 VecAddVec(M128 vec1, M128 vec2);
|
||||
internal static extern M128 VecAddVec(in IntPtr ptr1, in IntPtr ptr2 /**/, in IntPtr ret/**/);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "VecSubVec")]
|
||||
internal static extern M128 VecSubVec(M128 vec1, M128 vec2);
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "VecSubVec",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void VecSubVec(IntPtr ptr1, IntPtr ptr2,IntPtr ret);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "VecMulVec")]
|
||||
internal static extern float VecMulVec(M128 vec1, M128 vec2);
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "VecMulVec",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void VecMulVec(IntPtr ptr1, IntPtr ptr2, IntPtr ret);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "InitBigM128Map")]
|
||||
internal static unsafe extern long internalInitBigM128Map(int floatCount);
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "initSSE")]
|
||||
internal static extern ulong InternalInitSSE();
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "InitM128")]
|
||||
internal static unsafe extern IntPtr InternalInitM128(float x,float y,float z,float w);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "DeinitM128")]
|
||||
internal static unsafe extern void InternalDeinitM128(IntPtr m128Ptr);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
using StgSharp;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Logic;
|
||||
using System.Data;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public class M128Map
|
||||
public unsafe class M128Map
|
||||
{
|
||||
public readonly long mapID;
|
||||
|
||||
internal long mapPtr;
|
||||
internal readonly StgSharp.LinkedListNode<long> _unusedM128Header;
|
||||
private const int mapSize = 30 * 30;
|
||||
|
||||
internal StgSharp.LinkedList<long> m128Map =
|
||||
new StgSharp.LinkedList<long>();
|
||||
@@ -23,15 +26,16 @@ namespace StgSharp.Math
|
||||
|
||||
public M128Map()
|
||||
{
|
||||
long M128Ptr = internalIO.internalInitBigM128Map(4*30*30);
|
||||
m128Map.Add(0);
|
||||
mapPtr = (long)(Marshal.AllocHGlobal(sizeof(M128)*mapSize)+15);
|
||||
|
||||
long firstM128ptr = (mapPtr / 16 + 1) * 16;
|
||||
|
||||
m128Map.Add(0);
|
||||
_unusedM128Header = m128Map._hook._next;
|
||||
|
||||
for (int i = 1; i < 80*80/4; i++)
|
||||
for (int i = 0; i < 4*30*30*4; i+=16)
|
||||
{
|
||||
m128Map.Add(M128Ptr);
|
||||
M128Ptr += 4;
|
||||
m128Map.Add(firstM128ptr+i);
|
||||
}
|
||||
|
||||
mapID = Calc.RandomSeed();
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class SSE
|
||||
{
|
||||
public enum Registor : byte
|
||||
{
|
||||
XMM0=0,
|
||||
XMM1=1,
|
||||
XMM2=2,
|
||||
XMM3=3,
|
||||
XMM4=4,
|
||||
XMM5=5,
|
||||
XMM6=6,
|
||||
XMM7=7
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,34 @@ using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct M128ptrCache
|
||||
{
|
||||
internal ulong ptr0;
|
||||
internal ulong ptr1;
|
||||
internal ulong ptr2;
|
||||
internal ulong ptr3;
|
||||
internal ulong ptr4;
|
||||
internal ulong ptr5;
|
||||
internal ulong ptr6;
|
||||
internal ulong ptr7;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return
|
||||
$"{ptr0}\t" +
|
||||
$"{ptr1}\t" +
|
||||
$"{ptr2}\t" +
|
||||
$"{ptr3}\t" +
|
||||
$"{ptr4}\t" +
|
||||
$"{ptr5}\t" +
|
||||
$"{ptr6}\t" +
|
||||
$"{ptr7}\t" +
|
||||
$"";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)]
|
||||
internal struct M128
|
||||
{
|
||||
@@ -24,15 +52,18 @@ namespace StgSharp.Math
|
||||
[FieldOffset(0)] internal long double_0;
|
||||
[FieldOffset(8)] internal long double_1;
|
||||
|
||||
internal M128(float s0, float s1, float s2, float s3)
|
||||
internal M128(float x,float y,float z,float w)
|
||||
{
|
||||
single_0 = s0;
|
||||
single_1 = s1;
|
||||
single_2 = s2;
|
||||
single_3 = s3;
|
||||
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}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
public static unsafe partial class TimeLine
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -12,43 +11,60 @@ namespace StgSharp.Math
|
||||
Copy
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public class Matrix4x4
|
||||
public unsafe class Matrix4x4
|
||||
{
|
||||
internal long _row0Ptr;
|
||||
internal long _row1Ptr;
|
||||
internal long _row2Ptr;
|
||||
internal long _row3Ptr;
|
||||
internal M128Map map;
|
||||
|
||||
internal IntPtr _row0Ptr;
|
||||
internal IntPtr _row1Ptr;
|
||||
internal IntPtr _row2Ptr;
|
||||
internal IntPtr _row3Ptr;
|
||||
|
||||
|
||||
internal M128 _row0;
|
||||
internal M128 _row1;
|
||||
internal M128 _row2;
|
||||
internal M128 _row3;
|
||||
|
||||
private bool isTransposed=false;
|
||||
|
||||
private Matrix4x4 _transpose;
|
||||
|
||||
internal Matrix4x4()
|
||||
{
|
||||
_transpose = new Matrix4x4();
|
||||
_transpose._transpose = this;
|
||||
_transpose.isTransposed = true;
|
||||
|
||||
_row0Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row1Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row2Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row3Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
|
||||
_transpose = new Matrix4x4(this);
|
||||
}
|
||||
|
||||
internal Matrix4x4(M128 row0, M128 row1, M128 row2, M128 row3)
|
||||
|
||||
//Ctor used for the matixes of transposed matrix
|
||||
internal Matrix4x4(Matrix4x4 transpose)
|
||||
{
|
||||
this._row0 = row0;
|
||||
this._row1 = row1;
|
||||
this._row2 = row2;
|
||||
this._row3 = row3;
|
||||
|
||||
_row0Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row1Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row2Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
_row3Ptr = internalIO.InternalInitM128(0, 0, 0, 0);
|
||||
|
||||
_transpose = transpose;
|
||||
this.isTransposed=true;
|
||||
}
|
||||
|
||||
internal unsafe Matrix4x4(M128 row0, M128 row1, M128 row2, M128 row3)
|
||||
{
|
||||
|
||||
_row0Ptr = internalIO.InternalInitM128(
|
||||
row0.single_0, row0.single_1, row0.single_2, row0.single_3);
|
||||
_row1Ptr = internalIO.InternalInitM128(
|
||||
row1.single_0, row1.single_1, row1.single_2, row1.single_3);
|
||||
_row2Ptr = internalIO.InternalInitM128(
|
||||
row2.single_0, row2.single_1, row2.single_2, row2.single_3);
|
||||
_row3Ptr = internalIO.InternalInitM128(
|
||||
row3.single_0, row3.single_1, row3.single_2, row3.single_3);
|
||||
|
||||
_transpose = new Matrix4x4(this);
|
||||
}
|
||||
|
||||
public Matrix4x4(
|
||||
public unsafe Matrix4x4(
|
||||
float a00, float a01, float a02, float a03,
|
||||
float a10, float a11, float a12, float a13,
|
||||
float a20, float a21, float a22, float a23,
|
||||
@@ -56,37 +72,37 @@ namespace StgSharp.Math
|
||||
)
|
||||
{
|
||||
|
||||
_transpose = new Matrix4x4();
|
||||
_transpose._transpose = this;
|
||||
this._row0 = new M128(a00, a01, a02, a03);
|
||||
this._row1 = new M128(a10, a11, a12, a13);
|
||||
this._row2 = new M128(a20, a21, a22, a23);
|
||||
this._row3 = new M128(a30, a31, a32, a33);
|
||||
_row0Ptr = internalIO.InternalInitM128(a00,a01,a02,a03);
|
||||
_row1Ptr = internalIO.InternalInitM128(a10,a11,a12,a13);
|
||||
_row2Ptr = internalIO.InternalInitM128(a20,a21,a22,a23);
|
||||
_row3Ptr = internalIO.InternalInitM128(a30,a31,a32,a33);
|
||||
|
||||
_transpose = new Matrix4x4(this);
|
||||
}
|
||||
|
||||
internal void internalTranspose()
|
||||
{
|
||||
if (!isTransposed)
|
||||
{
|
||||
_transpose._row0.single_0 = _row0.single_0;
|
||||
_transpose._row0.single_1 = _row1.single_0;
|
||||
_transpose._row0.single_2 = _row2.single_0;
|
||||
_transpose._row0.single_3 = _row3.single_0;
|
||||
(*(M128*)_transpose._row0Ptr).single_0 = (*(M128*)_row0Ptr).single_0;
|
||||
(*(M128*)_transpose._row0Ptr).single_1 = (*(M128*)_row1Ptr).single_0;
|
||||
(*(M128*)_transpose._row0Ptr).single_2 = (*(M128*)_row2Ptr).single_0;
|
||||
(*(M128*)_transpose._row0Ptr).single_3 = (*(M128*)_row3Ptr).single_0;
|
||||
|
||||
_transpose._row1.single_0 = _row0.single_1;
|
||||
_transpose._row1.single_1 = _row1.single_1;
|
||||
_transpose._row1.single_2 = _row2.single_1;
|
||||
_transpose._row1.single_3 = _row3.single_1;
|
||||
|
||||
_transpose._row2.single_0 = _row0.single_2;
|
||||
_transpose._row2.single_1 = _row1.single_2;
|
||||
_transpose._row2.single_2 = _row2.single_2;
|
||||
_transpose._row2.single_3 = _row3.single_2;
|
||||
|
||||
_transpose._row3.single_0 = _row0.single_3;
|
||||
_transpose._row3.single_1 = _row1.single_3;
|
||||
_transpose._row3.single_2 = _row2.single_3;
|
||||
_transpose._row3.single_3 = _row3.single_3;
|
||||
(*(M128*)_transpose._row1Ptr).single_0 = (*(M128*)_row0Ptr).single_1;
|
||||
(*(M128*)_transpose._row1Ptr).single_1 = (*(M128*)_row1Ptr).single_1;
|
||||
(*(M128*)_transpose._row1Ptr).single_2 = (*(M128*)_row2Ptr).single_1;
|
||||
(*(M128*)_transpose._row1Ptr).single_3 = (*(M128*)_row3Ptr).single_1;
|
||||
|
||||
(*(M128*)_transpose._row2Ptr).single_0 = (*(M128*)_row0Ptr).single_2;
|
||||
(*(M128*)_transpose._row2Ptr).single_1 = (*(M128*)_row1Ptr).single_2;
|
||||
(*(M128*)_transpose._row2Ptr).single_2 = (*(M128*)_row2Ptr).single_2;
|
||||
(*(M128*)_transpose._row2Ptr).single_3 = (*(M128*)_row3Ptr).single_2;
|
||||
|
||||
(*(M128*)_transpose._row3Ptr).single_0 = (*(M128*)_row0Ptr).single_3;
|
||||
(*(M128*)_transpose._row3Ptr).single_1 = (*(M128*)_row1Ptr).single_3;
|
||||
(*(M128*)_transpose._row3Ptr).single_2 = (*(M128*)_row2Ptr).single_3;
|
||||
(*(M128*)_transpose._row3Ptr).single_3 = (*(M128*)_row3Ptr).single_3;
|
||||
|
||||
isTransposed = true;
|
||||
}
|
||||
@@ -99,10 +115,10 @@ namespace StgSharp.Math
|
||||
{
|
||||
case TransposeMode.New:
|
||||
return new Matrix4x4(
|
||||
_transpose._row0,
|
||||
_transpose._row1,
|
||||
_transpose._row2,
|
||||
_transpose._row3
|
||||
*(M128*)_transpose._row0Ptr,
|
||||
*(M128*)_transpose._row1Ptr,
|
||||
*(M128*)_transpose._row2Ptr,
|
||||
*(M128*)_transpose._row3Ptr
|
||||
);
|
||||
break;
|
||||
case TransposeMode.Copy:
|
||||
@@ -114,44 +130,45 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
public static Matrix4x4 operator +(Matrix4x4 matrix1, Matrix4x4 matrix2)
|
||||
{
|
||||
return new Matrix4x4(
|
||||
internalIO.VecAddVec(matrix1._row0, matrix2._row0),
|
||||
internalIO.VecAddVec(matrix1._row1, matrix2._row1),
|
||||
internalIO.VecAddVec(matrix1._row2, matrix2._row2),
|
||||
internalIO.VecAddVec(matrix1._row3, matrix2._row3)
|
||||
internalIO.VecAddVec(matrix1._row0Ptr, matrix2._row0Ptr),
|
||||
internalIO.VecAddVec(matrix1._row1Ptr, matrix2._row1Ptr),
|
||||
internalIO.VecAddVec(matrix1._row2Ptr, matrix2._row2Ptr),
|
||||
internalIO.VecAddVec(matrix1._row3Ptr, matrix2._row3Ptr)
|
||||
) ;
|
||||
}
|
||||
|
||||
public static Matrix4x4 operator *(Matrix4x4 matrix, float value)
|
||||
{
|
||||
M128 newRow0 = new M128(
|
||||
matrix._row0.single_0 * value,
|
||||
matrix._row0.single_1 * value,
|
||||
matrix._row0.single_2 * value,
|
||||
matrix._row0.single_3 * value
|
||||
(*(M128*)matrix._row0Ptr).single_0 * value,
|
||||
(*(M128*)matrix._row0Ptr).single_1 * value,
|
||||
(*(M128*)matrix._row0Ptr).single_2 * value,
|
||||
(*(M128*)matrix._row0Ptr).single_3 * value
|
||||
);
|
||||
|
||||
M128 newRow1 = new M128(
|
||||
matrix._row1.single_0 * value,
|
||||
matrix._row1.single_1 * value,
|
||||
matrix._row1.single_2 * value,
|
||||
matrix._row1.single_3 * value
|
||||
(*(M128*)matrix._row1Ptr).single_0 * value,
|
||||
(*(M128*)matrix._row1Ptr).single_1 * value,
|
||||
(*(M128*)matrix._row1Ptr).single_2 * value,
|
||||
(*(M128*)matrix._row1Ptr).single_3 * value
|
||||
);
|
||||
|
||||
M128 newRow2 = new M128(
|
||||
matrix._row2.single_0 * value,
|
||||
matrix._row2.single_1 * value,
|
||||
matrix._row2.single_2 * value,
|
||||
matrix._row2.single_3 * value
|
||||
(*(M128*)matrix._row2Ptr).single_0 * value,
|
||||
(*(M128*)matrix._row2Ptr).single_1 * value,
|
||||
(*(M128*)matrix._row2Ptr).single_2 * value,
|
||||
(*(M128*)matrix._row2Ptr).single_3 * value
|
||||
);
|
||||
|
||||
M128 newRow3 = new M128(
|
||||
matrix._row3.single_0 * value,
|
||||
matrix._row3.single_1 * value,
|
||||
matrix._row3.single_2 * value,
|
||||
matrix._row3.single_3 * value
|
||||
(*(M128*)matrix._row3Ptr).single_0 * value,
|
||||
(*(M128*)matrix._row3Ptr).single_1 * value,
|
||||
(*(M128*)matrix._row3Ptr).single_2 * value,
|
||||
(*(M128*)matrix._row3Ptr).single_3 * value
|
||||
);
|
||||
|
||||
return new Matrix4x4(
|
||||
@@ -159,6 +176,28 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{*(M128*)_row0Ptr}\n{*(M128*)_row1Ptr}\n{*(M128*)_row2Ptr}\n{*(M128*)_row3Ptr}";
|
||||
}
|
||||
|
||||
|
||||
/**/
|
||||
~Matrix4x4()
|
||||
{
|
||||
if (map==null)
|
||||
{
|
||||
Marshal.FreeHGlobal((IntPtr)_row0Ptr);
|
||||
Marshal.FreeHGlobal((IntPtr)_row1Ptr);
|
||||
Marshal.FreeHGlobal((IntPtr)_row2Ptr);
|
||||
Marshal.FreeHGlobal((IntPtr)_row3Ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
//in case the matrix is in a M128 map
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,63 +6,86 @@ using System.Runtime.InteropServices;
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
|
||||
public class Vec4d
|
||||
{
|
||||
internal readonly int mapID;
|
||||
internal readonly long m128Ptr;
|
||||
internal readonly M128Map _map;
|
||||
internal readonly IntPtr _m128Ptr;
|
||||
|
||||
private M128 _value;
|
||||
|
||||
public unsafe float X
|
||||
{
|
||||
get { return (*(M128*)mapID).single_0; }
|
||||
set { (*(M128*)mapID).single_0 = value; }
|
||||
get { return (*(M128*)_m128Ptr).single_0; }
|
||||
set { (*(M128*)_m128Ptr).single_0 = value; }
|
||||
}
|
||||
|
||||
public float Y
|
||||
public unsafe float Y
|
||||
{
|
||||
get { return _value.single_1; }
|
||||
set { _value.single_1 = value; }
|
||||
get { return (*(M128*)_m128Ptr).single_1; }
|
||||
set { (*(M128*)_m128Ptr).single_1 = value; }
|
||||
}
|
||||
|
||||
public float Z
|
||||
public unsafe float Z
|
||||
{
|
||||
get { return _value.single_2; }
|
||||
set { _value.single_2 = value; }
|
||||
get { return (*(M128*)_m128Ptr).single_2; }
|
||||
set { (*(M128*)_m128Ptr).single_2 = value; }
|
||||
}
|
||||
|
||||
public float W
|
||||
public unsafe float W
|
||||
{
|
||||
get { return _value.single_3; }
|
||||
set { _value.single_3 = value; }
|
||||
get { return (*(M128*)_m128Ptr).single_3; }
|
||||
set { (*(M128*)_m128Ptr).single_3 = value; }
|
||||
}
|
||||
|
||||
public Vec4d(float x, float y, float z, float w)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
Z = z;
|
||||
W = w;
|
||||
IntPtr a = internalIO.InternalInitM128(x,y,z,w);
|
||||
if ((ulong)a>=0)
|
||||
{
|
||||
this._m128Ptr = a;
|
||||
}
|
||||
}
|
||||
|
||||
internal Vec4d()
|
||||
{
|
||||
|
||||
_m128Ptr = internalIO.InternalInitM128(0,0,0,0);
|
||||
}
|
||||
|
||||
public static Vec4d operator +(Vec4d vec1,Vec4d vec2)
|
||||
{
|
||||
Vec4d result = new Vec4d();
|
||||
result._value = internalIO.VecAddVec(vec1._value,vec2._value);
|
||||
internalIO.VecAddVec(vec1._m128Ptr, vec2._m128Ptr/**/,result._m128Ptr/**/);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**/
|
||||
public static Vec4d operator -(Vec4d vec1, Vec4d vec2)
|
||||
{
|
||||
Vec4d result = new Vec4d();
|
||||
result._value = internalIO.VecAddVec(vec1._value, vec2._value);
|
||||
internalIO.VecSubVec(vec1._m128Ptr,vec2._m128Ptr,result._m128Ptr);
|
||||
return result;
|
||||
}
|
||||
/**/
|
||||
|
||||
|
||||
public unsafe override string ToString()
|
||||
{
|
||||
return $"{*(M128*)_m128Ptr}";
|
||||
}
|
||||
|
||||
~Vec4d()
|
||||
{
|
||||
if (_map == null)
|
||||
{
|
||||
internalIO.InternalDeinitM128(this._m128Ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<EnableNETAnalyzers>True</EnableNETAnalyzers>
|
||||
<AnalysisLevel>preview-all</AnalysisLevel>
|
||||
<OutputType>Library</OutputType>
|
||||
<StartupObject></StartupObject>
|
||||
<StartupObject>StgSharp.Debug.DebugProgram</StartupObject>
|
||||
<Nullable>enable</Nullable>
|
||||
<Configurations>Debug;Release;NoOps</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
90bd7195add9e7840a5242a3ac308feca4b9379c
|
||||
7187d76e83f08a7f8f9257b5e2e267ca420dd38a
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user