mesh loader caches meshes so we don't load the same mesh twice