I didn't read all comments here, sorry. My experience with this problem is: The parseb3d code works well, But you should use it with a file than contains only the lights of your level, this will make it faster as well. So use the Export Lights Function of Gile[s]
I also suggest to run the parser and write the light positions, colors etc. right to a simple textfile and use that textfile in your game, instead of the parser.
One thing is very sigificant: you should not use directx lights (createlight) because the more lights you got in the scene, the slower it gets, and 8 lights at the same time are the maximum anyway. So all you could do was to hide and show the 3 or 4 lights that are closest to the player dynamicly. But this would also result in popin/out fx, I don't know if this is a good idea.
Maybe you better write a special function that is using 2 or so lights that are paretnted to the camera, left and right side, then you would calcualte the lights red, green and blue that reaches the player from the giles exported information and set the LightColor of the 2 lights in a way that it kinda fits the lightmapping.
I also suggest to run the parser and write the light positions, colors etc. right to a simple textfile and use that textfile in your game, instead of the parser.
One thing is very sigificant: you should not use directx lights (createlight) because the more lights you got in the scene, the slower it gets, and 8 lights at the same time are the maximum anyway. So all you could do was to hide and show the 3 or 4 lights that are closest to the player dynamicly. But this would also result in popin/out fx, I don't know if this is a good idea.
Maybe you better write a special function that is using 2 or so lights that are paretnted to the camera, left and right side, then you would calcualte the lights red, green and blue that reaches the player from the giles exported information and set the LightColor of the 2 lights in a way that it kinda fits the lightmapping.