I will be happy to share my project as soon as I get the first parts to work.
A long time ago I created a portal renderer. It used recursion and frustums
that extended from each portal. Something like this:
# Pseudo
proc cellRender(cell, frustum):
...
for o in cell.objects:
if frustum.contains(o.bsphere):
case o.type:
of drawable:
drawableRender(o, frustum)
of portal:
cellRender(o.cell, o.frustum)
...
cellRender(startingCell, camera.frustum)
The same code can be used for each light as well. The portal and camera should
then test for collision to decide if the observer enters an new cell.
About the conflict. The file `fancygl.nim` imports a regexp module called `nre`
which is part of the Nim standard library. The module `nre` imports a module
called `options`, but there are 2 modules called `options` inside the
searchPath, `compile/options` and `pure/options`. This causes a conflict. I
assume this is a bug in the master branch version I am using.