public void ProjectVector(ref idVec4 src, ref idVec4 dst) { dst.x = src * mat[0]; dst.y = src * mat[1]; dst.z = src * mat[2]; dst.w = src * mat[3]; }
public idMat4(ref idVec4 x, ref idVec4 y, ref idVec4 z, ref idVec4 w) { mat[0] = x; mat[1] = y; mat[2] = z; mat[3] = w; }
public static void Lerp(out idVec4 t, idVec4 v1, idVec4 v2, float l) { if (l <= 0.0f) { t = v1; } else if (l >= 1.0f) { t = v2; } else { t = v1 + (v2 - v1) * l; } }
public bool Compare(ref idVec4 a, float epsilon) { return(idMath.Fabs(x - a.x) <= epsilon && idMath.Fabs(y - a.y) <= epsilon && idMath.Fabs(z - a.z) <= epsilon && idMath.Fabs(w - a.w) <= epsilon); }
public bool Compare(ref idVec4 a) { return(x == a.x && y == a.y && z == a.z && w == a.w); }
public idVec4 opDiv(idVec4 a) { x /= a.x; y /= a.y; z /= a.z; w /= a.w; return(this); }
public idVec4 opSub(idVec4 a) { x -= a.x; y -= a.y; z -= a.z; w -= a.w; return(this); }
public idVec4 opAdd(idVec4 a) { x += a.x; y += a.y; z += a.z; w += a.w; return(this); }
public idVec4 opAdd(idVec4 a) { x += a.x; y += a.y; z += a.z; w += a.w; return this; }
static uint PackColor(ref idVec4 color) { uint dx = ColorFloatToByte(color.x); uint dy = ColorFloatToByte(color.y); uint dz = ColorFloatToByte(color.z); return (dx << 0) | (dy << 8) | (dz << 16); }
static void UnpackColor(uint color, ref idVec4 unpackedColor) { unpackedColor.Set(((color >> 0) & 255) * (1.0f / 255.0f), ((color >> 8) & 255) * (1.0f / 255.0f), ((color >> 16) & 255) * (1.0f / 255.0f), ((color >> 24) & 255) * (1.0f / 255.0f)); }
public bool Compare(ref idVec4 a, float epsilon) { return (idMath.Fabs(x - a.x) <= epsilon && idMath.Fabs(y - a.y) <= epsilon && idMath.Fabs(z - a.z) <= epsilon && idMath.Fabs(w - a.w) <= epsilon); }
public bool Compare(ref idVec4 a) { return (x == a.x && y == a.y && z == a.z && w == a.w); }
public idVec4 opDiv(idVec4 a) { x /= a.x; y /= a.y; z /= a.z; w /= a.w; return this; }
public idVec4 opSub(idVec4 a) { x -= a.x; y -= a.y; z -= a.z; w -= a.w; return this; }
public void UnprojectVector(ref idVec4 src, ref idVec4 dst) { dst = mat[0] * src.x + mat[1] * src.y + mat[2] * src.z + mat[3] * src.w; }
public static void Lerp(out idVec4 t, idVec4 v1, idVec4 v2, float l) { if (l <= 0.0f) t = v1; else if (l >= 1.0f) t = v2; else t = v1 + (v2 - v1) * l; }