using StgSharp.Control; using StgSharp.Math; using System; using System.Runtime.InteropServices; namespace StgSharp.Math { public class Vec4d { internal readonly int mapID; internal readonly long m128Ptr; private M128 _value; public unsafe float X { get { return (*(M128*)mapID).single_0; } set { (*(M128*)mapID).single_0 = value; } } public float Y { get { return _value.single_1; } set { _value.single_1 = value; } } public float Z { get { return _value.single_2; } set { _value.single_2 = value; } } public float W { get { return _value.single_3; } set { _value.single_3 = value; } } public Vec4d(float x, float y, float z, float w) { X = x; Y = y; Z = z; W = w; } internal Vec4d() { } public static Vec4d operator +(Vec4d vec1,Vec4d vec2) { Vec4d result = new Vec4d(); result._value = internalIO.VecAddVec(vec1._value,vec2._value); return result; } public static Vec4d operator -(Vec4d vec1, Vec4d vec2) { Vec4d result = new Vec4d(); result._value = internalIO.VecAddVec(vec1._value, vec2._value); return result; } } }