After digging around I found that I can switch the current level by calling CCryAction::ScheduleEndLevel(…) as follows:
CCryAction* pCryAction = static_cast<CCryAction*>(gEnv->pGame->GetIGameFramework());
pCryAction->ScheduleEndLevel("Level2", true);
This works as expected on PC, but on device just turns into a black screen. If I change my autoexec.cfg to load Level2 instead (e.g. “map Level2”) then the level loads just fine on device, so I don’t think there are any missing assets?
Any ideas?