|SOURCE|
[Linux::System::LinuxWindow]
* When grabbing the mouse, the mouse acceleration is set to 1, with a threshold
  of 0
* Releasing the mouse sets the mouse acceleration back to its previous values
|MERGE|
system_input -> window_manager
|SOURCE|
[Common::System::InputTypes]
* ZED_MOUSE_COORDINATE_* enums renamed to ZED_MOUSE_AXIS_*
* Added a MouseAxisToString function to make identifying mouse axes easy when
  printing debug messages
[Common::Utility::InputBinder]
* Added mouse axis binding functions
* BindMouseAxis will attempt to bind the desired mouse axis to the specified
  action, returning ZED_FAIL if there was an error
* GetActionFromMouseAxis returns the first action found that is bound to the
  mouse axis requested, if no action was found, 0 is returned
* GetActionsFromMouseAxis retuns all actions available for the requested mouse
  axis.  This function assumes that if the action array is valid that it is of
  the correct dimensions, to acquire the correct dimensions for the actions
  bound to the axis, call GetActionCountForMouseAxis
* GetActionCountForMouseAxis returns the amount of actions bound to the
  requested axis
* PrintBoundMouseAxes displays the actions bound to the different mouse axes to
  the standard output
|SOURCE|
[Common::Arithmetic::Quaternion]
* Added an operator to multiply a Quaternion by a Vector3 which returns a
  Vector3 as a result
[Linux::Arithmetic::Quaternion]
* Quaternion * Vector3 converts the vector to a quaternion, and performs the
  following operation:
  v = q * v * 'q
  Where; v = vector, q = quaternion, 'q = quaternion conjugate
|MERGE|
arithmetic_quaternion -> unstable
|MERGE|
system_input -> unstable
|MERGE|
https://github.com/El-Rico/ZED -> unstable
|SOURCE|
[Common::Utility::FirstPersonCamera]
* Rotate only rotates the camera by its pitch and yaw (hopefully eliminating
  the tilt experienced in the FreeCamera, which is not desired for this camera
  type)
* Update calculates the LookAt and Up by roatating both by the current rotation
  quaternion and setting the view matrix via SetViewLookAt
* Move alters the velocity by rotating the desired velocity with the rotation
  quaternion (this does not eliminate the Y movement)
|SOURCE|
[Common::Utility::Camera]
* SetViewLookAt multiplies the matrix derived from the right, up, and direction
  vectors with the position (column vector result), rather than the position
  with the matrix (row vector result)
[Common::Utility::FirstPersonCamera]
* The LookAt and Up Quaternions in Update have been replaced by Vector3s to
  save on the conversion to a Vector3 each time
|SOURCE|
[Linux::Arithmetic::Matrix4x4]
* AffineInverse on self will make the current matrix the affine inverse (upper
  3x3 inverse) of itself
* AffineInverse with a parameter will make the matrix passed in the affine
  inverse of the matrix being called upon
* AffineInverseOf sets the current matrix to the affine inverse of the matrix
  passed in
|SOURCE|
[Common::Utility::FirstPersonCamera]
* Move will translate the camera along the XZ plane by the velocity requested,
  this does not handle the Y axis
|SOURCE|
[Linux::System::LinuxWindow]
* GetCurrentDisplayNumber would not work for DISPLAY environment variables
  reporting ':0' as their display number, as null characters were not being
  checked.  To resolve this, the total size of the string is used instead of
  running until a '.' character is found.
|SOURCE|
[Common::Renderer::Font]
* Removed SaveTrueTypeBitmap, OpenBitmap, and OpenTrueType as these are of no
  use with the new ZED font file format
* Added the SIGNED_DISTANCE_FONT type to the list of FONT_TYPE enums
* FONTHEADER contains the header information for a ZED font file
* Added a virtual Load member function to allow for derived classes to override
  this functionality when loading renderer-specific fonts
[Common::Renderer::OGL::GLFont]
* This class is intended to provide a fixed function or programmable pipeline
  aware font for OpenGL
* Thus far, the load function only checks the file loaded if it is of at least
  the size of a FONT_HEADER struct
[Common::System::DataTypes]
* Added ZED_FILE_END_CHUNK to signify the end of a sequence of chunks in a file
  as well as to precede the next chunk in a file
|SOURCE|
[Common::Renderer::Font]
* Added chunk types for the font glyph and texture to be used when reading the
  font file
* ReadChunk passes the chunk type and size to be verified into member functions
  specialised for each chunk type
[Common::System::DataTypes]
* Added ZED_LASTCHUNKREAD to be used as a return status for ReadChunk in
  Renderer's Font class
[Common::Renderer::GLFont]
* Stubbed-out the ReadChunk member function to return ZED_OK for valid types,
  ZED_LASTCHUNKREAD for the final chunk, and ZED_FAIL for unrecognised ones
* Added a loop to read the remaining bytes in the font file
|SOURCE|
[Common::Renderer::Font]
* The FONT_TYPE and FONT_BACKGROUNDMODE enums start at one instead of zero
[Common::Renderer::Text]
* This class is responsible for rendering 2D text on the screen or in a 3D
  scene
|SOURCE|
[Common::System::File]
* Added ReadUInt32 and WriteUInt32 member functions, which act in the same way
  as previous Read* and Write* memeber functions
[Linux::System::NativeFile]
* ReadUInt32 will read p_Count ZED_UINT32-sized values from the file and will
  report any errors
* WriteUInt32 writes the requested amount of ZED_UINT32s, returning ZED_OK if
  the function did not encounter any errors
|SOURCE|
[Linux::System::NativeFile]
* Rewind resets the position in the stream of the current file to the beginning
* Add Read* and Write* member functions check if m_pFile is not null before
  continuing
* Read* member functions verify the p_pRead variable is not null before
  attempting to use it, discarding its use if it is not passed in
* Write* member functions verify the p_pWritten variable is not null before
  attempting to use it, discarding its use if it is not passed in
|MERGE|
system_file -> renderer_text
|SOURCE|
[Common::System::File]
* Added IsOpen to check if the file is still open
* Added a default constructor to set the open status to false
[Linux::System::NativeFile]
* Open status is set according to the fopen and fclose calls
* Replaced all instances of checking if m_pFile is ZED_NULL with checking the
  value of the m_Open variable
|SOURCE|
[Common::System::File]
* The constructor sets the file descriptor to be invalid
* GetSize is implemented in the class, rather than being a virtual function, as
  the m_Size member variable is available to all derived classes
* Added a file descriptor member variable which is usful for memory mapped
  files using the file descriptor to map the contentss of the file into memory
* GetFileDescriptor returns the file descriptor associated with the file stream
[Common::System::MemoryMappedFile]
* Memory mapped files can be used to treat memory as if it were a file.  This
  class allows files which have file descriptors (namely; NativeFile and
  ZEDFile) to have the entire file or a part of the file resident in memory,
  and will only modify the contents of the original file if the file is open
  for writing and if the names of the files differ
* SetOffset* sets the offset in the file for either a theoretically 2GiB
  limited 32-bit offset into a file or a 64-bit offset
* SetSize is only available for memory mapped files, as the length of the file
  to be read into memory must be known
* SetFileToMap takes in any ZED::System::File and as long as the file
  descriptor is valid (i.e. there is a stream available), it may be mapped into
  memory
[Common::System::NativeFile]
* Removed GetSize member function and the m_Size member varialbe, as they are
  available in the base class
[Linux::System::DataTypes_Linux_x86_32]
* Added ZED_SCHAR8 and ZED_SCHAR16
* Added file descriptor type (ZED_FILE_DESCRIPTOR) and the value of an invalid
  file descriptor (ZED_FILE_DESCRIPTOR_INVALID)
[Linux::System::DataTypes_Linux_x86_64]
* Removed duplicate ZED_SCHAR8
* Added file descriptor type (ZED_FILE_DESCRIPTOR) and the value of an invalid
  file descriptor (ZED_FILE_DESCRIPTOR_INVALID)
[Linux::System::MemoryMappedFile]
* Open does not currently do any checking of permissions on the file open to
  disable writing or save to another file (which will be harder, due to being
  able to read/write to either a native file or a ZED file)
* Open verifies the file descriptor is valid, that the size being accessed is
  not zero or runs past the end of the file (32-bit only for the second one
  right now), and that only one offset type is set (32-bit or 64-bit)
* Open calls mmap when the data required has been verified as being safe to run
  with
* Close calls munmap to release the mapping of the file from memory
[Linux::System::NativeFile]
* At the end of Open, the file descriptor for the file is obtained and checked
  to be valid, returning ZED_FAIL if it is not valid