MeshPtr should be a typedef for ProtectedPtr<Mesh> not std::shared_ptr<Mesh>