public static void ApplyScreenDeltaToWorldPos(Vec2 screenDelta, ref Vec3 worldPos)
{
Vec3 vec = Camera.FrontVector;
if ((double)Math.Abs(vec.X) < 0.001 && (double)Math.Abs(vec.Y) < 0.001)
{
vec = Camera.UpVector;
}
Vec2 vec2 = -vec.XY;
vec2.Normalize();
Vec2 vec3 = new Vec2(-vec2.Y, vec2.X);
float num = (float)((double)Vec3.Dot(worldPos - Camera.Position, Camera.FrontVector) * Math.Tan((double)Camera.HalfFOV) * 2.0);
worldPos.X += num * screenDelta.X * vec3.X + num * screenDelta.Y * vec2.X;
worldPos.Y += num * screenDelta.X * vec3.Y + num * screenDelta.Y * vec2.Y;
}