Resulting (debug) executables are ~100 kB smaller, all operations
which were previously logarithmic are now done in constant time and
the whole implementation is a lot simpler.
Previously the scene was its own parent, which was good sometimes back
then, but it became so ugly and complicated hack ("my friend has access
to my privates"-style) that it needed to be replaced with something less
ugly.
Now there is an function isScene() which is overloaded in Scene. Yes,
it's possible to overload it anywhere else, but you better shouldn't
even think about it.
It only caused another maintenance burden and was confusing to users.
Now when scene graph is in SceneGraph namespace there is no need for
another grouping. Namespaces are (and should be) sufficient.
This reverts commit 79945ab6fc.
Conflicts:
src/BufferedImage.h
src/BufferedTexture.h
src/Framebuffer.h
src/Query.h
src/SceneGraph/Scene.h
They aren't much useful in Math namespace and here it allows to handle
also Color3/Color4 types. Moreover all RGBA component names were removed
from Math namespace, so it would be inconsistent to have them there only
in swizzle() functions.
Double has 15-17 significant decimal digits precision, extended
the constant to have 15 decimal digits. On the other hand, float has
only 6-9 digits, so there is no need to have more than 9.
Added just-to-be-sure test for sqrt* constants.
If being careful, it's now possible to swap GlutContext with EglContext.
GlutContext doesn't have keyReleaseEvent() and many keys, but EglContext
doesn't have e.g. mouseMotionEvent().
Query depends on 3.0/EXT_transform_feedback (also PRIMITIVES_GENERATED,
even if it wasn't in the specs), only part of SampleQuery requires
3.0/NV_conditional_render, the rest is in 2.1 already.