private void PickBody()
        {
            Vector3 rayFrom = _demo.FreeLook.Eye;
            Vector3 rayTo   = _demo.GetCameraRayTo();

            DiscreteDynamicsWorld world = _demo.Simulation.World;

            using (var rayCallback = new ClosestRayResultCallback(ref rayFrom, ref rayTo))
            {
                world.RayTestRef(ref rayFrom, ref rayTo, rayCallback);
                if (rayCallback.HasHit)
                {
                    Vector3 pickPosition = rayCallback.HitPointWorld;
                    var     body         = rayCallback.CollisionObject as RigidBody;
                    if (body != null)
                    {
                        PickRigidBody(body, ref pickPosition);
                    }
                    else
                    {
                        var collider = rayCallback.CollisionObject as MultiBodyLinkCollider;
                        if (collider != null)
                        {
                            PickMultiBody(collider, ref pickPosition);
                        }
                    }
                    _oldPickingDist = (pickPosition - rayFrom).Length;
                }
            }
        }