Use Animable<dimensions, T> and AnimableGroup<dimensions, T> like before
and add two kinds of aliases instead of only one:
BasicAnimable[Group]2D<T>/BasicAnimable[Group]3D<T> for abstract type
and Animable[Group]2D/Animable[Group]3D for Float.
Partially reverts commit c32c12b387.
Use AbstractObject<dimensions, T> like before and add two kinds of
aliases instead of only one:
AbstractBasicObject2D<T>/AbstractBasicObject3D<T> for abstract type and
AbstractObject2D/AbstractObject2D for Float.
Makes it easier to use AbstractObject in templates of fixed dimensions
(e.g. Bullet integration, where it can now be written as
`AbstractBasicObject2D<btScalar>` instead of potentially confusing
`AbstractBasicObject<2, btScalar>`).
Partially reverts commit cfd405c32c.
Use static libraries for plugins which aren't used as dependencies (as
they don't export any symbols anyway), use shared libraries for plugins
used as dependencies (as they already export the symbols and static
libraries cause linker errors on mingw32).
Allows to store glyph advance also for notfound glyph, which is exactly
what we want for unknown characters. Also added version information to
allow further extensions.
It seems that in this particular case `a &= b` is not doing the same as
`a = a & b`. In Release build the expression is miscompiled (it
always resets `a` to zero), in Debug build it triggers ICE:
Object.hpp:280:9: internal compiler error: in make_decl_rtl, at varasm.c:1318
Possibly related to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43880.
Changed to `a = a & b` in all cases, now SceneGraphObject test passes
again. Outside of Object (e.g. in Corrade's EnumSet tests) this is not
reproducible, wtf.
Moreover, classic solution, `-fno-strict-aliasing` didn't help at all
here. Probably caused by some other optimization, IMHO.
As it now isn't passed by pointer, this allows doing things like this:
/* Lost all hope in this hardware */
if(!awesomeFeatureSupported)
createContext({});