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; }