v0.14
-----
- Added GestureDetector node type to libheilanextras (all it does at the moment
  is draw gestures made on the Ashitaka interface - it doesn't actually do any
  detection yet).
- Finally got round to incorporating xine-lib so it's possible to view videos
  via MovieTexture (though all MovieTexture's other functionality is currently
  missing - it'll play videos at *Heilan's* framerate, but that's all for now).
- Implemented Viewport node type.

v0.13
-----
- Added the ability to switch to fullscreen mode on the fly, via the 'F' key.
- Implemented global attribute for DirectionalLight.
- Implemented Switch node.
- Implemented Fog node.
- Fixed Background so that you don't have to put in a skyAngle/groundAngle value
  for it to display properly.
- Fixed Background so ground and sky hemispheres meet up instead of leaving a
  big gap between them.
- Implemented LineProperties node.
- Implemented alpha blending, so transparent objects will be displayed as
  transparent now (as long as the objects behind them are rendered 1st -
  Heilan doesn't do any depth sorting).
- Implemented Billboard node (see test75_blending.x3d).
- Implemented PointLight node.
- Mouse-controlled Camera movements can now be recorded as OSC messages.
- Added basic panning to Examine navigation type (right mouse button).
- Implemented WebcamTexture node in libheilanextras, to display the output from
  a webcam as a texture.  Uses a simple library I wrote (NiallsCamLib), but only
  Windows is supported at the moment.
- Added initialise() method to AbstractNode.  This is to avoid doing unnecessary
  setup when nodes are registered with NodeFactory (as it calls their
  constructors), and should speed up program startup a bit.
- Added Linux support to NiallsCamLib - just Video4Linux 1 though, since my
  camera doesn't seem to have V4L2 drivers?
- Fixed stupid bug in the offline rendering.
- Implemented PaintingBackground node in libheilanextras.
- Fixed nasty bug in AudioClip.
- Implemented SparkParticles node in libheilanextras (the functionality could
  probably have been added to the ParticleGenerator node instead though).
- Implemented BooleanFilter, BooleanToggle and BooleanTrigger nodes.
- Implemented IntegerTrigger and TimeTrigger nodes.
- Reformatted the output of --nodes.
- Fixed some DirectionalLight bugs, added bool support to StringParser,
  implemented BooleanSequencer.
- Implemented IntegerSequencer.
- Implemented SpotLight.
- ExamineNavigation now starts at the home viewpoint, instead of (0, 0, 0).
- Implemented KeySensor node and (libheilanextras) KeyTrigger helper node.
- Implemented ElevationGrid node.
- Fixed Ambisonic soundfield rotation to work if you rotate around a single
  axis - more complex rotations will screw up though.  This is a problem to do
  with how we move the OpenGL camera (well, how we move the scene around the
  camera), which (as far as I can tell) is incompatible with how we place
  sounds in the Ambisonic soundfield.  Will need some thought applied to it
  before it's working entirely correctly.
- Implemented StringSensor.
- Implemented ProximitySensor.
- Mostly implemented Inline (it doesn't support dynamic loading/unloading yet -
  don't expect it to work if you send an event to its url attribute).
- Updated libheilanextras documentation.
- Re-did Ambisonic soundfield rotation again, so that we now rotate the nodes'
  individual positions rather than the entire soundfield. CPU usage will be a
  bit higher, but it should be more accurate.  Still only works when rotating
  around a single axis though, sigh...
- Added a bunch of OSX-specific fixes.
- Fixed ColorRGBA so that it reads the colour components in the correct order
  (R, G, B, A).
- Added big endian support for OSX and Linux (a side effect of the OSX fixes was
  that I realised textures were displayed wrong on big endian machines).
- All SFBool (and MFBool) attributes are now parsed using a common parser
  (StringParser.getBool() etc.).
- Re-licensed all code under v3 of the GPL.

v0.12
-----
- Added AccelLine node to libheilanextras, to visualise the accelerometer data
  from my interface.
- Added AccelTransform node to libheilanextras, to move objects (and the camera,
  if necessary) according to the aforementioned accelerometer data (doesn't work
  particularly well - Camera moves slower than the transformed object?).
- Added MotionBlur node to libheilanextras, but it's not very good...
- Added DeformableSphere2 node to libheilanextras.
- Added PhysicalSurface node to libheilanextras (visual equivalent of a Tao
  surface).
- Added DynamicTexture node to libheilanextras.
- Added ProceduralTexture class to libheilanextras make it simpler to add new
  procedural textures (current textures: RubbishNoise, StraightSine, Perlin,
  ThresholdPerlin).
- Added AvailableExtensions singleton to simplify access to OpenGL extensions
  (currently only multitexturing, shader, and frame buffer object extensions are
  supported).
- Offline rendering now works in terms of seconds, instead of samples.
- Bool 'parser' now handles 'true' and 'false' as well as 'TRUE' and 'FALSE'.
- Added keyboard support for switching between Viewpoints to the EXAMINE
  navigation type (HOME = 1st node, END = last node, PGUP = next node, PGDOWN =
  previous node).
- Installs heilanbrowser.desktop to <prefix>/share/applications, and
  HeilanCoo.png to <prefix>/share/pixmaps/heilan on *nix systems now (so you can
  get a nice icon).
- Refactored audio calculations so that AbstractNode subclasses don't have to do
  any Ambisonic encoding (unless they need to).  If you've created your own
  AbstractNode subclasses, you'll need to re-write the audioDoStuff() or
  pre/postChildAudio() methods (basically all you need to do though is cut out
  the Ambisonic encoding code, and shift the rest of the code to
  getMonoAudio()).
- Implemented EXAMINE navigation type correctly.
- Updated and cleaned up some of the doxygen documentation.
- Implemented mappings framework for Ashitaka, making it really easy to connect
  parameters from different objects (interface, visual synth, audio synth...)
  together.
- Included preliminary Ashitaka node in libheilanextras, though it doesn't
  really do anything yet.
- Added bloom filter post-processing option.  It's pretty slow though, and
  requires the graphics card to support shaders and frame buffer objects.
  Probably best used for offline rendering.  Also, it's a bit jittery when
  things are moving.  (it's basically rubbish, I should probably remove it...)
- Fixed make dist and heilanbrowser.desktop not getting built, created a (local)
  subversion repository so I can't break things irreversibly.
- Implemented ProgramShader and ShaderProgram nodes for basic GLSL shader
  support (see test72_programshader.x3d for an example of per-pixel lighting and
  a toon shader).
- Added -O3 flag to libheilanextras Makefile.am on Linux, making things quite a
  bit faster (doh!).
- Implemented multitexturing, with the caveat that the only MultiTexture mode
  currently available is MODULATE.
- Fixed --nodes command line switch after the addition of multitexturing to
  nodes like Box' constructors broke it.

v0.11
-----
- Added ParticleGenerator node to libheilanextras (before I realised there were
  particle nodes in the latest revision of the X3D spec...).
- Changed OSC implementation to use the DEF name to obtain a node's address,
  rather than MetadataString->heilan_oscName.
- Added GhostImage node to libheilanextras.
- Added TransientDetector node to libheilanextras.
- Camera position and rotation is now accessible via OSC
  (/heilan/camera/position and /heilan/camera/rotation, respectively).
- Added support for textures in Background.
- Fixed sound and visuals drifting out of sync when rendering offline.
- Added USE support.
- Added OSC event recording and playback facility (see -rO command-line option
  and OscPlayback node in libheilanextras).
- Upgraded NiallsOSCLib and NiallsSocketLib.
- Added colour banding support to Background.
- Added FPS navigation type (not complete, and still a bit jerky for some
  reason).
- CoordinateInterpolator now works.
- NormalInterpolator now works.
- Textures are now mapped correctly (I think).
- Fixed offline rendering rendering jpegs upside down.
- The parser can now handle hex values for SFInts and SFImages.

v0.10
-----
- First release.
