private Vector3 GetAxisPlaneHitPoint(SceneObject obj, Ray ray) { Vector3 planeDisplacement = (obj.Transform.Position * SelectedAxis.Abs()); float sign = planeDisplacement.IsZero() ? 1 : Math.Sign(planeDisplacement.X + planeDisplacement.Y + planeDisplacement.Z); Plane p1 = new Plane(planeDisplacement.Length, sign * SelectedAxis); float dist; if (p1.IntersectsRay(ray, out dist)) { return(ray.Origin + ray.Direction.Normalized() * dist); } return(Vector3.Zero); }