But still (absent some really really funky optimization algorithm that I don't think is actually in use in any compiler--though I can envision how it would work), that flag would have to be checked every frame--which may not be terribly expensive, but is unnecessarily expensive if there exists a better way.
opcOpenRenderViewport is how Orb:Connect does it's one-time initialization, and it's been working that way pretty well for awhile. It's also called after the simulation state is already established, right before things get going, so you should be able to access whatever simulation data you need.
One gotcha: Make sure you clean up anything declared in opcCloseRenderViewport, because it's possible for the simulation to be restarted (ie, user exits to the launchpad, and then starts again), and if you don't clean things up you could end up using variables left over from the previous run.
If the initialization can be done only once (and it's irrelevant if it persists across runs), InitModule may be preferable. The simulation state will not be available (since there's no simulation running), but that way you won't be affecting the sim load time.