Daily update on 20230803 by nitload youmu, problem of parameter displacement solved, rewriting other linear math

This commit is contained in:
Nitload
2023-08-03 22:46:16 +08:00
parent 194d65edf6
commit aae7e0292c
105 changed files with 13858 additions and 11394 deletions
+46 -13
View File
@@ -9,8 +9,11 @@ namespace StgSharp.Math
public class Vec4d
{
internal readonly M128Map _map;
internal readonly IntPtr _m128Ptr;
internal static readonly Vec4d defaultValue
= new Vec4d( 0,0,0,0 );
internal M128Map _map;
internal IntPtr _m128Ptr;
public unsafe float X
@@ -39,34 +42,57 @@ namespace StgSharp.Math
public Vec4d(float x, float y, float z, float w)
{
IntPtr a = internalIO.InternalInitM128(x,y,z,w);
IntPtr a = internalIO.load_internal(x,y,z,w);
if ((ulong)a>=0)
{
this._m128Ptr = a;
}
}
internal Vec4d()
/// <summary>
/// internal constructor to recive a pointer of the M128 value
/// </summary>
/// <param name="value"></param>
internal Vec4d(IntPtr value)
{
_m128Ptr = internalIO.InternalInitM128(0,0,0,0);
if ((long)value == -1)
{
throw new Exception("Failed to init M128 pointer!");
}
else
{
_m128Ptr = value;
}
}
public static Vec4d operator +(Vec4d vec1,Vec4d vec2)
public Vec4d()
{
Vec4d result = new Vec4d();
internalIO.VecAddVec(vec1._m128Ptr, vec2._m128Ptr/**/,result._m128Ptr/**/);
return result;
_m128Ptr = defaultValue._m128Ptr;
}
public static unsafe Vec4d operator +(Vec4d vec1,Vec4d vec2)
{
return new Vec4d(
internalIO.addps_internal(vec1._m128Ptr,vec2._m128Ptr)
) ;
}
/**/
public static Vec4d operator -(Vec4d vec1, Vec4d vec2)
{
Vec4d result = new Vec4d();
internalIO.VecSubVec(vec1._m128Ptr,vec2._m128Ptr,result._m128Ptr);
return result;
return new Vec4d(
internalIO.subps_internal(vec1._m128Ptr,vec2._m128Ptr)
);
}
/**/
public static Vec4d operator *(Vec4d vec, float value)
{
return new Vec4d(
internalIO.mulps_const_internal(vec._m128Ptr,value)
);
}
public unsafe override string ToString()
{
@@ -77,7 +103,14 @@ namespace StgSharp.Math
{
if (_map == null)
{
internalIO.InternalDeinitM128(this._m128Ptr);
if (_m128Ptr != defaultValue._m128Ptr)
{
internalIO.deinitM128_internal(this._m128Ptr);
}
else
{
_m128Ptr = IntPtr.Zero;
}
}
else
{