boost::shared_ptr<Collider> Collider::GetCollider(long geomID)
{
    if (geomID == 0)
        {
            return boost::shared_ptr<Collider>();
        }

    Collider* collPtr =
        mColliderImp->GetColliderPointer(geomID);

    if (collPtr == 0)
        {
            // we cannot use the logserver here
            cerr << "ERROR: (Collider) no Collider found for GeomID "
                 << geomID << "\n";
            return boost::shared_ptr<Collider>();
        }

    boost::shared_ptr<Collider> collider = static_pointer_cast<Collider>
        (collPtr->GetSelf().lock());

    if (collider.get() == 0)
        {
            // we cannot use the logserver here
            cerr << "ERROR: (Collider) got no boost::shared_ptr for GeomID "
                 << geomID << "\n";
        }

    return collider;
}