Have a look at Sparkys Collision. It does a whole heap of different collision types, raycasting, sliding etc, you can assign collision groups and check things individually, some of the demos that come with it, do almost exactly what you are asking.
One of the raycast demos presents you with a bunch of primitives and raycasts from the camera to the mouse, if it hits a poly of one of the objects, the poly is highlighted(kinda, think it actually has another small object pasted on the position of the racast collision).... im sure you could adapt that to what you are trying to achieve.
If it ain't broke.... DONT FIX IT !!!