public Vector3 Project(Vector3 source)
{
Matrix matrix = Matrix.Multiply(view, projection);
Vector3 vector = Vector3.Transform(source, matrix);
float a = (((source.X * matrix.M14) + (source.Y * matrix.M24)) + (source.Z * matrix.M34)) + matrix.M44;
if (!WithinEpsilon(a, 1f))
vector = (Vector3)(vector / a);
vector.X = (((vector.X + 1f) * 0.5f) * width);
vector.Y = (((-vector.Y + 1f) * 0.5f) * height);
vector.Z = (vector.Z * (near - far)) + near;
return vector;
}