By changing the 'pass by value' to be a 'pass by const reference' (and
adding some const qualifiers) the calculator can take any of the three
types.
Performance could be improved further using C++11 perfect forwarding to
pass the function on without changing a thing. I added a comment to remind
us of this.
Also added a test for passing a function and a (commented out) test for
passing a lambda.
Since these are now functions and not in a class there's no obvious
encapsulation for the two related functions. Previously they were
only available in the PolyVox namespace documentation where they were
hidden among lots of other things. Adding the \file command to
Raycast.h allows up to add comments to that page (_raycast_8h.html)
and have that as the central location for the raycast docs.
There still needs to be a comment about the form that the callback
must take (return type and arguments) including the fact that both
functors and lambdas work.
As far as I can tell, by default Doxygen doesn't make links from
specialised templates back to their bases so this adds it manually.
This is especially useful given that the base template has some very good
documentation in this case.
As discussed on the forums, to simplify the CMake code and avoid having to
manually specify dependencies this removes the hack to allow both static
and shared libraries to be built at the same time.
It introduces the new variable LIBRARY_TYPE which can be either STATIC or
DYNAMIC.
See: http://www.volumesoffun.com/phpBB3/viewtopic.php?p=3203#p3203
Due to the hack in which we enable the building of both static and
shared libraries CMake's automatic dependency sorting isn't working.
Manually specifying the dependency seems to solve the problem of
components building out of order.